From e7862d5066baf9939def4bdea8e803fc20f93ef0 Mon Sep 17 00:00:00 2001 From: Doug Kwan Date: Thu, 18 Nov 2010 23:25:08 +0000 Subject: 2010-11-18 Doug Kwan * expression.cc (BINARY_EXPRESSION): Initialize left_alignment and right_alignment to be zero. Store result alignment only if it is greater than existing alignment. --- gold/expression.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gold/expression.cc') 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) \ -- cgit v1.2.1