aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorLeif Ekblad <leif@rdos.net>2013-05-15 20:35:29 +0000
committerUros Bizjak <uros@gcc.gnu.org>2013-05-15 22:35:29 +0200
commitb8b3f0ca0fd587be6f48251f1bc6a2e87ae20381 (patch)
treeb07a4b13ff1d40aa6d38d8ec735909f99ab99fc1 /gcc
parent4722d00530525aba45b4b8ab4bbc0a983fe7c0e4 (diff)
downloadgcc-b8b3f0ca0fd587be6f48251f1bc6a2e87ae20381.zip
gcc-b8b3f0ca0fd587be6f48251f1bc6a2e87ae20381.tar.gz
gcc-b8b3f0ca0fd587be6f48251f1bc6a2e87ae20381.tar.bz2
i386.c (ix86_decompose_address): Use DEFAULT_TLS_SEG_REG to access TLS segment register.
* config/i386/i386.c (ix86_decompose_address): Use DEFAULT_TLS_SEG_REG to access TLS segment register. * config/i386/i386.h (DEFAULT_TLS_SEG_REG): New define. * config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Ditto. (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Ditto. From-SVN: r198948
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/config/i386/i386.h3
-rw-r--r--gcc/config/i386/rdos.h6
4 files changed, 19 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 425e3d2..9690c68 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2013-05-15 Leif Ekblad <leif@rdos.net>
+
+ * config/i386/i386.c (ix86_decompose_address): Use
+ DEFAULT_TLS_SEG_REG to access TLS segment register.
+ * config/i386/i386.h (DEFAULT_TLS_SEG_REG): New define.
+ * config/i386/rdos.h (DEFAULT_TLS_SEG_REG): Ditto.
+ (TARGET_TLS_DIRECT_SEG_REFS_DEFAULT): Ditto.
+
2013-05-15 Richard Sandiford <rdsandiford@googlemail.com>
PR target/57260
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 27684f6..a4f30e8 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -11698,7 +11698,7 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
if (XINT (op, 1) == UNSPEC_TP
&& TARGET_TLS_DIRECT_SEG_REFS
&& seg == SEG_DEFAULT)
- seg = TARGET_64BIT ? SEG_FS : SEG_GS;
+ seg = DEFAULT_TLS_SEG_REG;
else
return 0;
break;
@@ -13650,7 +13650,7 @@ ix86_delegitimize_tls_address (rtx orig_x)
if (GET_CODE (x) != PLUS || GET_MODE (x) != Pmode)
return orig_x;
if (ix86_decompose_address (x, &addr) == 0
- || addr.seg != (TARGET_64BIT ? SEG_FS : SEG_GS)
+ || addr.seg != DEFAULT_TLS_SEG_REG
|| addr.disp == NULL_RTX
|| GET_CODE (addr.disp) != CONST)
return orig_x;
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 1e03635..6055b99 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -543,6 +543,9 @@ extern tree x86_mfence;
/* The default abi used by target. */
#define DEFAULT_ABI SYSV_ABI
+/* The default TLS segment register used by target. */
+#define DEFAULT_TLS_SEG_REG (TARGET_64BIT ? SEG_FS : SEG_GS)
+
/* Subtargets may reset this to 1 in order to enable 96-bit long double
with the rounding mode forced to 53 bits. */
#define TARGET_96_ROUND_53_LONG_DOUBLE 0
diff --git a/gcc/config/i386/rdos.h b/gcc/config/i386/rdos.h
index b67c152..b7242bb 100644
--- a/gcc/config/i386/rdos.h
+++ b/gcc/config/i386/rdos.h
@@ -21,6 +21,12 @@ along with GCC; see the file COPYING3. If not see
#undef TARGET_EXECUTABLE_SUFFIX
#define TARGET_EXECUTABLE_SUFFIX ".exe"
+#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
+#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
+
+#undef DEFAULT_TLS_SEG_REG
+#define DEFAULT_TLS_SEG_REG SEG_GS
+
#undef TARGET_RDOS
#define TARGET_RDOS 1