OSDN Git Service

Revert:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 23 Mar 2008 12:07:34 +0000 (12:07 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 23 Mar 2008 12:07:34 +0000 (12:07 +0000)
        2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>

        * config/i386/i386-modes.def: Use 4 byte alignment on DI for
        32bit host.

        2008-03-19  Uros Bizjak  <ubizjak@gmail.com>

        PR target/35496
        * stor-layout.c (update_alignment_for_field): Set minimum alignment
        of the underlying type of a MS bitfield layout to the natural
        alignment of the type.

        2008-03-22  Uros Bizjak  <ubizjak@gmail.com>

        * config/i386/i386.c (assign_386_stack_local): Align DImode slots
        to their natural alignment to avoid store forwarding stalls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133461 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386-modes.def
gcc/config/i386/i386.c
gcc/stor-layout.c

index e098eb2..27dbcb2 100644 (file)
@@ -1,3 +1,23 @@
+2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
+
+       Revert:
+       2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386-modes.def: Use 4 byte alignment on DI for
+       32bit host.
+
+       2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/35496
+       * stor-layout.c (update_alignment_for_field): Set minimum alignment
+       of the underlying type of a MS bitfield layout to the natural
+       alignment of the type.
+
+       2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (assign_386_stack_local): Align DImode slots
+       to their natural alignment to avoid store forwarding stalls.
+
 2008-03-22  Richard Guenther  <rguenther@suse.de>
 
        * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
 
        Revert:
-
        2008-02-15  Uros Bizjak  <ubizjak@gmail.com>    
        * config/i386/sfp-machine.h (CMPtype): Define as typedef using
        libgcc_cmp_return mode.
index d94b1b9..9be7498 100644 (file)
@@ -17,10 +17,6 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* In 32bit, DI mode uses 32bit registers.  Only 4 byte alignment
-   is needed.  */
-ADJUST_ALIGNMENT (DI, (TARGET_64BIT || TARGET_ALIGN_DOUBLE) ? 8 : 4);
-
 /* The x86_64 ABI specifies both XF and TF modes.
    XFmode is __float80 is IEEE extended; TFmode is __float128
    is IEEE quad.  */
index 60c000c..8ddfa9f 100644 (file)
@@ -16315,7 +16315,6 @@ rtx
 assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
 {
   struct stack_local_entry *s;
-  int align;
 
   gcc_assert (n < MAX_386_STACK_LOCALS);
 
@@ -16326,19 +16325,11 @@ assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
     if (s->mode == mode && s->n == n)
       return copy_rtx (s->rtl);
 
-  /* Align DImode slots to their natural alignment
-     to avoid store forwarding stalls.  */
-  if (mode == DImode
-      && (GET_MODE_BITSIZE (mode) > GET_MODE_ALIGNMENT (mode)))
-    align = GET_MODE_BITSIZE (mode);
-  else
-    align = 0;
-
   s = (struct stack_local_entry *)
     ggc_alloc (sizeof (struct stack_local_entry));
   s->n = n;
   s->mode = mode;
-  s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), align);
+  s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
 
   s->next = ix86_stack_locals;
   ix86_stack_locals = s;
index ff46687..67e4c25 100644 (file)
@@ -699,9 +699,6 @@ update_alignment_for_field (record_layout_info rli, tree field,
                 && ! integer_zerop (DECL_SIZE (rli->prev_field)))))
        {
          unsigned int type_align = TYPE_ALIGN (type);
-         unsigned int type_size
-           = tree_low_cst (TYPE_SIZE (type), 1);
-         type_align = MAX (type_align, type_size);
          type_align = MAX (type_align, desired_align);
          if (maximum_field_alignment != 0)
            type_align = MIN (type_align, maximum_field_alignment);