2010-11-18 Doug Kwan <dougkwan@google.com>
authorDoug Kwan <dougkwan@google.com>
Thu, 18 Nov 2010 23:25:08 +0000 (23:25 +0000)
committerDoug Kwan <dougkwan@google.com>
Thu, 18 Nov 2010 23:25:08 +0000 (23:25 +0000)
* 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/ChangeLog
gold/expression.cc

index 97e6e28..29a3438 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2010-11-16  Cary Coutant  <ccoutant@google.com>
 
        PR gold/12220
index 5441f7e..e527b5e 100644 (file)
@@ -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)       \