* function.c (assign_stack_local_1): Do not correct stack slot
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Aug 2005 18:36:26 +0000 (18:36 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Aug 2005 18:36:26 +0000 (18:36 +0000)
        address if allocation size is smaller than mode size.

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

gcc/ChangeLog
gcc/function.c

index 6b62ce5..8472494 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-04  David Edelsohn  <edelsohn@gnu.org>
+
+       * function.c (assign_stack_local_1): Do not correct stack slot
+       address if allocation size is smaller than mode size.
+
 2005-08-04  Diego Novillo  <dnovillo@redhat.com>
 
        PR 22037
index 225c2a9..3584099 100644 (file)
@@ -454,7 +454,7 @@ assign_stack_local_1 (enum machine_mode mode, HOST_WIDE_INT size, int align,
 
   /* On a big-endian machine, if we are allocating more space than we will use,
      use the least significant bytes of those that are allocated.  */
-  if (BYTES_BIG_ENDIAN && mode != BLKmode)
+  if (BYTES_BIG_ENDIAN && mode != BLKmode && GET_MODE_SIZE (mode) < size)
     bigend_correction = size - GET_MODE_SIZE (mode);
 
   /* If we have already instantiated virtual registers, return the actual