i386.c (memory_address_length): Added missing part from my previous commit.
authorUros Bizjak <ubizjak@gmail.com>
Mon, 22 Oct 2012 19:39:14 +0000 (21:39 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 22 Oct 2012 19:39:14 +0000 (21:39 +0200)
* config/i386/i386.c (memory_address_length):
Added missing part from my previous commit.

From-SVN: r192694

gcc/ChangeLog
gcc/config/i386/i386.c

index e7e9788..3794f50 100644 (file)
@@ -18,8 +18,8 @@
 
        * config/i386/i386.c (memory_address_length): Assert that non-null
        base or index RTXes are registers.  Do not check for REG RTXes.
-       Determine addr32 prefix from original base and index RTXes.
-       Simplify code.
+       Determine addr32 prefix using SImode_address_operand or
+       from original base and index RTXes.  Simplify code.
 
 2012-10-22  Richard Biener  <rguenther@suse.de>
 
index 8e78fba..ae48d1a 100644 (file)
@@ -23780,7 +23780,8 @@ memory_address_length (rtx addr, bool lea)
 
   /*  If this is not LEA instruction, add the length of addr32 prefix.  */
   if (TARGET_64BIT && !lea
-      && ((parts.base && GET_MODE (parts.base) == SImode)
+      && (SImode_address_operand (addr, VOIDmode)
+         || (parts.base && GET_MODE (parts.base) == SImode)
          || (parts.index && GET_MODE (parts.index) == SImode)))
     len++;