i386.c (ix86_address_cost): Add explicit restriction to RTL level for the check for...
authorIgor Zamyatin <igor.zamyatin@intel.com>
Tue, 16 Dec 2014 08:35:29 +0000 (08:35 +0000)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Tue, 16 Dec 2014 08:35:29 +0000 (08:35 +0000)
gcc/
* config/i386/i386.c (ix86_address_cost): Add explicit restriction
to RTL level for the check for PIC register.

From-SVN: r218777

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

index 81cf70bd9def7f07ae793610d7472d016542911e..36dcc97dfb82bf94d925bf67e774dcf69b2c4447 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-16  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       * config/i386/i386.c (ix86_address_cost): Add explicit restriction
+       to RTL level for the check for PIC register.
+
 2014-12-16  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/gnu-user.h (TARGET_CAN_SPLIT_STACK): Move from here ...
index bfb135e8c45db5de74b21fd6a9d3564746723ef4..72c1219c4c00e600dbaa7e954a8b112fbb987400 100644 (file)
@@ -12831,12 +12831,14 @@ ix86_address_cost (rtx x, machine_mode, addr_space_t, bool)
      Therefore only "pic_offset_table_rtx" could be hoisted out, which is not
      profitable for x86.  */
   if (parts.base
-      && (!pic_offset_table_rtx
-         || REGNO (pic_offset_table_rtx) != REGNO(parts.base))
+      && (current_pass->type == GIMPLE_PASS
+         || (!pic_offset_table_rtx
+             || REGNO (pic_offset_table_rtx) != REGNO(parts.base)))
       && (!REG_P (parts.base) || REGNO (parts.base) >= FIRST_PSEUDO_REGISTER)
       && parts.index
-      && (!pic_offset_table_rtx
-         || REGNO (pic_offset_table_rtx) != REGNO(parts.index))
+      && (current_pass->type == GIMPLE_PASS
+         || (!pic_offset_table_rtx
+             || REGNO (pic_offset_table_rtx) != REGNO(parts.index)))
       && (!REG_P (parts.index) || REGNO (parts.index) >= FIRST_PSEUDO_REGISTER)
       && parts.base != parts.index)
     cost++;