i386-protos.h (ix86_use_pseudo_pic_reg): New.
authorIlya Enkovich <ilya.enkovich@intel.com>
Thu, 29 Jan 2015 12:24:06 +0000 (12:24 +0000)
committerIlya Enkovich <ienkovich@gcc.gnu.org>
Thu, 29 Jan 2015 12:24:06 +0000 (12:24 +0000)
* config/i386/i386-protos.h (ix86_use_pseudo_pic_reg): New.
* config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Simplify by
using x86_use_pseudo_pic_reg.
* config/i386/i386.c (ix86_conditional_register_usage): Remove
support for fixed PIC register.
(ix86_use_pseudo_pic_reg): Not static any more.

Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r220242

gcc/ChangeLog
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.h

index 7afc30186bfd3cc5d726d4bbae34b201b62fb482..295884e78706524dac1d429159f1d1d77fcc9471 100644 (file)
@@ -1,3 +1,13 @@
+2015-01-29  Ilya Enkovich  <ilya.enkovich@intel.com>
+           Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386-protos.h (ix86_use_pseudo_pic_reg): New.
+       * config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Simplify by
+       using x86_use_pseudo_pic_reg.
+       * config/i386/i386.c (ix86_conditional_register_usage): Remove
+       support for fixed PIC register.
+       (ix86_use_pseudo_pic_reg): Not static any more.
+
 2015-01-29  Ilya Enkovich  <ilya.enkovich@intel.com>
 
        PR middle-end/64805
index 17aed5a817363763a4eb2d8fe9486edfae73ae44..39624270638f211c20be98397cd2295c6bf11c70 100644 (file)
@@ -40,6 +40,8 @@ extern void ix86_output_addr_diff_elt (FILE *, int, int);
 extern enum calling_abi ix86_cfun_abi (void);
 extern enum calling_abi ix86_function_type_abi (const_tree);
 
+extern bool ix86_use_pseudo_pic_reg (void);
+
 extern void ix86_reset_previous_fndecl (void);
 
 #ifdef RTX_CODE
index 1db80709bea0ed13244c9898f1df40587799ee22..fecb855322ce7513379b8b31c92f3c8ef85c998e 100644 (file)
@@ -4384,12 +4384,6 @@ static void
 ix86_conditional_register_usage (void)
 {
   int i, c_mask;
-  unsigned int j;
-
-  /* The PIC register, if it exists, is fixed.  */
-  j = PIC_OFFSET_TABLE_REGNUM;
-  if (j != INVALID_REGNUM)
-    fixed_regs[j] = call_used_regs[j] = 1;
 
   /* For 32-bit targets, squash the REX registers.  */
   if (! TARGET_64BIT)
@@ -6265,7 +6259,7 @@ ix86_maybe_switch_abi (void)
 
 /* Return 1 if pseudo register should be created and used to hold
    GOT address for PIC code.  */
-static bool
+bool
 ix86_use_pseudo_pic_reg (void)
 {
   if ((TARGET_64BIT
index 395778cd3066db9a6d78b24c2b60371fb0c65da9..5d1e5e0cff8858e0cb1c223f56ee5a46d3430d53 100644 (file)
@@ -1256,13 +1256,11 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
 #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)
+  (ix86_use_pseudo_pic_reg ()                                          \
+   ? (pic_offset_table_rtx                                             \
+      ? INVALID_REGNUM                                                 \
+      : REAL_PIC_OFFSET_TABLE_REGNUM)                                  \
+   : INVALID_REGNUM)
 
 #define GOT_SYMBOL_NAME "_GLOBAL_OFFSET_TABLE_"