diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2011-07-28 16:42:45 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2011-07-28 16:42:45 +0200 |
commit | f51c4a8aabef1b1e3003d436ccfe20f58c772b31 (patch) | |
tree | fc1072c649f7b69c243893ec8433cd820aac181b | |
parent | 5e9627caa4597431f0e366708a79e7ec48e7a006 (diff) | |
download | gcc-f51c4a8aabef1b1e3003d436ccfe20f58c772b31.zip gcc-f51c4a8aabef1b1e3003d436ccfe20f58c772b31.tar.gz gcc-f51c4a8aabef1b1e3003d436ccfe20f58c772b31.tar.bz2 |
re PR target/47715 ([x32] TLS doesn't work)
PR target/47715
* config/i386/i386.md (*tls_global_dynamic_64): Remove mode from
tls_symbolic_operand check. Update code sequence for TARGET_X32.
(tls_global_dynamic_64): Remove mode from tls_symbolic_operand check.
(tls_dynamic_gnu2_64): Ditto.
(*tls_dynamic_gnu2_lea_64): Ditto.
(*tls_dynamic_gnu2_call_64): Ditto.
(*tls_dynamic_gnu2_combine_64): Ditto.
From-SVN: r176872
-rw-r--r-- | gcc/ChangeLog | 18 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 23 |
2 files changed, 26 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59e1cd5..707bd26 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2011-07-28 Uros Bizjak <ubizjak@gmail.com> + + PR target/47715 + * config/i386/i386.md (*tls_global_dynamic_64): Remove mode from + tls_symbolic_operand check. Update code sequence for TARGET_X32. + (tls_global_dynamic_64): Remove mode from tls_symbolic_operand check. + (tls_dynamic_gnu2_64): Ditto. + (*tls_dynamic_gnu2_lea_64): Ditto. + (*tls_dynamic_gnu2_call_64): Ditto. + (*tls_dynamic_gnu2_combine_64): Ditto. + 2011-07-28 H.J. Lu <hongjiu.lu@intel.com> * config.gcc: Set need_64bit_hwint to yes for x86 targets. @@ -15,21 +26,20 @@ 2011-07-28 Kai Tietz <ktietz@redhat.com> - * tree-vrp.c (simplify_stmt_using_ranges): Remove - TRUTH_NOT_EXPR case. + * tree-vrp.c (simplify_stmt_using_ranges): Remove TRUTH_NOT_EXPR case. (simplify_truth_ops_using_ranges): Likewise. (build_assert_expr_for): Likewise. (build_assert_expr_for_1): Remove TRUTH_NOT_EXPR case and handle BIT_NOT_EXPR for truth-operation. 2011-07-28 Georg-Johann Lay <avr@gjlay.de> - + PR target/49313 Undo r176835 from trunk 2011-07-27 Georg-Johann Lay 2011-07-28 Georg-Johann Lay <avr@gjlay.de> - + PR target/49687 * config/avr/t-avr (LIB1ASMFUNCS): Remove _xmulhisi3_exit. Add _muluhisi3, _mulshisi3, _usmulhisi3. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index fce4268..01e9a38 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -12327,11 +12327,12 @@ (call:DI (mem:QI (match_operand:DI 2 "constant_call_address_operand" "z")) (match_operand:DI 3 "" ""))) - (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] + (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_TLS_GD)] "TARGET_64BIT" { - fputs (ASM_BYTE "0x66\n", asm_out_file); + if (!TARGET_X32) + fputs (ASM_BYTE "0x66\n", asm_out_file); output_asm_insn ("lea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}", operands); fputs (ASM_SHORT "0x6666\n", asm_out_file); @@ -12349,7 +12350,7 @@ (call:DI (mem:QI (match_operand:DI 2 "constant_call_address_operand" "")) (const_int 0))) - (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] + (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_TLS_GD)])]) (define_insn "*tls_local_dynamic_base_32_gnu" @@ -12502,7 +12503,7 @@ ix86_tls_descriptor_calls_expanded_in_cfun = true; }) -(define_insn "*tls_dynamic_lea_32" +(define_insn "*tls_dynamic_gnu2_lea_32" [(set (match_operand:SI 0 "register_operand" "=r") (plus:SI (match_operand:SI 1 "register_operand" "b") (const:SI @@ -12515,7 +12516,7 @@ (set_attr "length" "6") (set_attr "length_address" "4")]) -(define_insn "*tls_dynamic_call_32" +(define_insn "*tls_dynamic_gnu2_call_32" [(set (match_operand:SI 0 "register_operand" "=a") (unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "") (match_operand:SI 2 "register_operand" "0") @@ -12553,7 +12554,7 @@ (define_expand "tls_dynamic_gnu2_64" [(set (match_dup 2) - (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] + (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_TLSDESC)) (parallel [(set (match_operand:DI 0 "register_operand" "") @@ -12566,9 +12567,9 @@ ix86_tls_descriptor_calls_expanded_in_cfun = true; }) -(define_insn "*tls_dynamic_lea_64" +(define_insn "*tls_dynamic_gnu2_lea_64" [(set (match_operand:DI 0 "register_operand" "=r") - (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] + (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_TLSDESC))] "TARGET_64BIT && TARGET_GNU2_TLS" "lea{q}\t{%a1@TLSDESC(%%rip), %0|%0, %a1@TLSDESC[rip]}" @@ -12577,9 +12578,9 @@ (set_attr "length" "7") (set_attr "length_address" "4")]) -(define_insn "*tls_dynamic_call_64" +(define_insn "*tls_dynamic_gnu2_call_64" [(set (match_operand:DI 0 "register_operand" "=a") - (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "") + (unspec:DI [(match_operand 1 "tls_symbolic_operand" "") (match_operand:DI 2 "register_operand" "0") (reg:DI SP_REG)] UNSPEC_TLSDESC)) @@ -12598,7 +12599,7 @@ (reg:DI SP_REG)] UNSPEC_TLSDESC) (const:DI (unspec:DI - [(match_operand:DI 1 "tls_symbolic_operand" "")] + [(match_operand 1 "tls_symbolic_operand" "")] UNSPEC_DTPOFF)))) (clobber (reg:CC FLAGS_REG))] "TARGET_64BIT && TARGET_GNU2_TLS" |