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
This commit is contained in:
Uros Bizjak 2011-07-28 16:42:45 +02:00
parent 5e9627caa4
commit f51c4a8aab
2 changed files with 26 additions and 15 deletions

View File

@ -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.

View File

@ -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"