On Wed, Jan 28, 2015 at 5:03 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
> Hello!
>
>> Currently ix86_conditional_register_usage code may mark EBX as a fixed 
>> register if it is called
>> when pic_offset_table_rtx is NULL even if we are going to use pseudo PIC 
>> register.  It already
>> caused some problem in combination with another issue (PR jit/64722).  This 
>> patch will probably
>> help to avoid problems in the future.
>>
>> BTW if we don't want to support possibility to switch to the fixed PIC 
>> register in i386 target then
>> this code may be removed at all.
>
> No, we don't want to switch to fixed PIC register. cpuid asm in
> cpuid.h and cmpxchg8b pattern will break. Please do not bring back the
> dead and remove this code.

Also, if possible, please simplify PIC_OFFSET_TABLE_REGNUM to use
TARGET_USE_PSEUDO_PIC_REG, like:

Index: config/i386/i386.h
===================================================================
--- config/i386/i386.h  (revision 220230)
+++ config/i386/i386.h  (working copy)
@@ -1256,13 +1256,11 @@
 #define REAL_PIC_OFFSET_TABLE_REGNUM  (TARGET_64BIT ? R15_REG : BX_REG)

 #define PIC_OFFSET_TABLE_REGNUM
         \
-  ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC                       \
-                     || TARGET_PECOFF))
         \
-   || !flag_pic
         \
-   ? INVALID_REGNUM                                                    \
-   : pic_offset_table_rtx                                              \
-     ? INVALID_REGNUM                                                  \
-     : REAL_PIC_OFFSET_TABLE_REGNUM)
+  (TARGET_USE_PSEUDO_PIC_REG                                           \
+   ? (pic_offset_table_rtx                                             \
+      ? INVALID_REGNUM                                                 \
+      : REAL_PIC_OFFSET_TABLE_REGNUM)                                  \
+   : INVALID_REGNUM)

 #define GOT_SYMBOL_NAME "_GLOBAL_OFFSET_TABLE_"

Uros.

Reply via email to