diff options
author | Leif Ekblad <leif@rdos.net> | 2013-05-15 20:35:29 +0000 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2013-05-15 22:35:29 +0200 |
commit | b8b3f0ca0fd587be6f48251f1bc6a2e87ae20381 (patch) | |
tree | b07a4b13ff1d40aa6d38d8ec735909f99ab99fc1 /gcc | |
parent | 4722d00530525aba45b4b8ab4bbc0a983fe7c0e4 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/rdos.h | 6 |
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 |