aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2015-01-29 12:24:06 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2015-01-29 12:24:06 +0000
commitd290bb1d72b5ef24be30d43abcaa17caa387c3c6 (patch)
treec243f2fd2e0ea79c58cd180cf87aa906b319615e /gcc
parente11627e99afac67809c632f2ab030461129bdb02 (diff)
downloadgcc-d290bb1d72b5ef24be30d43abcaa17caa387c3c6.zip
gcc-d290bb1d72b5ef24be30d43abcaa17caa387c3c6.tar.gz
gcc-d290bb1d72b5ef24be30d43abcaa17caa387c3c6.tar.bz2
i386-protos.h (ix86_use_pseudo_pic_reg): New.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/i386/i386-protos.h2
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/config/i386/i386.h12
4 files changed, 18 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7afc301..295884e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,14 @@
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
* ipa-inline.c (early_inliner): Rebuild IPA_REF_CHKP reference
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index 17aed5a..3962427 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 1db8070..fecb855 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 395778c..5d1e5e0 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -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_"