summaryrefslogtreecommitdiff
path: root/gold/expression.cc
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2010-11-18 23:25:08 +0000
committerDoug Kwan <dougkwan@google.com>2010-11-18 23:25:08 +0000
commite7862d5066baf9939def4bdea8e803fc20f93ef0 (patch)
treeccbd31acfb53d1284f5342a532189feaa82c2e63 /gold/expression.cc
parent2eb03da01835a2d97160f37f03016b1aa0f11e3b (diff)
downloadbinutils-redhat-e7862d5066baf9939def4bdea8e803fc20f93ef0.tar.gz
2010-11-18 Doug Kwan <dougkwan@google.com>
* expression.cc (BINARY_EXPRESSION): Initialize left_alignment and right_alignment to be zero. Store result alignment only if it is greater than existing alignment.
Diffstat (limited to 'gold/expression.cc')
-rw-r--r--gold/expression.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/gold/expression.cc b/gold/expression.cc
index 5441f7e261..e527b5e382 100644
--- a/gold/expression.cc
+++ b/gold/expression.cc
@@ -399,18 +399,19 @@ class Binary_expression : public Expression
value(const Expression_eval_info* eei) \
{ \
Output_section* left_section; \
- uint64_t left_alignment; \
+ uint64_t left_alignment = 0; \
uint64_t left = this->left_value(eei, &left_section, \
&left_alignment); \
Output_section* right_section; \
- uint64_t right_alignment; \
+ uint64_t right_alignment = 0; \
uint64_t right = this->right_value(eei, &right_section, \
&right_alignment); \
if (KEEP_RIGHT && left_section == NULL && right_section != NULL) \
{ \
if (eei->result_section_pointer != NULL) \
*eei->result_section_pointer = right_section; \
- if (eei->result_alignment_pointer != NULL) \
+ if (eei->result_alignment_pointer != NULL \
+ && right_alignment > *eei->result_alignment_pointer) \
*eei->result_alignment_pointer = right_alignment; \
} \
else if (KEEP_LEFT \
@@ -419,8 +420,9 @@ class Binary_expression : public Expression
{ \
if (eei->result_section_pointer != NULL) \
*eei->result_section_pointer = left_section; \
- if (eei->result_alignment_pointer != NULL) \
- *eei->result_alignment_pointer = right_alignment; \
+ if (eei->result_alignment_pointer != NULL \
+ && left_alignment > *eei->result_alignment_pointer) \
+ *eei->result_alignment_pointer = left_alignment; \
} \
else if ((WARN || left_section != right_section) \
&& (left_section != NULL || right_section != NULL) \