Call simplify_gen_subreg for PIC with mode of x.
authorH.J. Lu <hongjiu.lu@intel.com>
Tue, 26 Jul 2011 21:43:57 +0000 (21:43 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Tue, 26 Jul 2011 21:43:57 +0000 (14:43 -0700)
2011-07-26  H.J. Lu  <hongjiu.lu@intel.com>

PR target/47372
* config/i386/i386.c (ix86_delegitimize_address): Call
simplify_gen_subreg for PIC with mode of x only if modes of
x and orig_x are different.

From-SVN: r176812

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

index 08fb66517be6b9de1283e6f337244dbd0e1a2631..b93f220835c08131caa84ea1405c4ef7f759e014 100644 (file)
@@ -1,3 +1,10 @@
+2011-07-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/47372
+       * config/i386/i386.c (ix86_delegitimize_address): Call
+       simplify_gen_subreg for PIC with mode of x only if modes of
+       x and orig_x are different.
+
 2011-07-26  Jakub Jelinek  <jakub@redhat.com>
 
        * dwarf2out.c (output_macinfo_op): Ensure fd->filename points
index 429cd6271cae9e0af5b050a41a7cd343aad6adbb..960622a155efcfdb45ae2bc085c844e7a769665b 100644 (file)
@@ -12967,9 +12967,10 @@ ix86_delegitimize_address (rtx x)
          || !MEM_P (orig_x))
        return ix86_delegitimize_tls_address (orig_x);
       x = XVECEXP (XEXP (x, 0), 0, 0);
-      if (GET_MODE (orig_x) != Pmode)
+      if (GET_MODE (orig_x) != GET_MODE (x))
        {
-         x = simplify_gen_subreg (GET_MODE (orig_x), x, Pmode, 0);
+         x = simplify_gen_subreg (GET_MODE (orig_x), x,
+                                  GET_MODE (x), 0);
          if (x == NULL_RTX)
            return orig_x;
        }