Commit f51c4a8a by Uros Bizjak

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
parent 5e9627ca
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> 2011-07-28 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc: Set need_64bit_hwint to yes for x86 targets. * config.gcc: Set need_64bit_hwint to yes for x86 targets.
...@@ -15,21 +26,20 @@ ...@@ -15,21 +26,20 @@
2011-07-28 Kai Tietz <ktietz@redhat.com> 2011-07-28 Kai Tietz <ktietz@redhat.com>
* tree-vrp.c (simplify_stmt_using_ranges): Remove * tree-vrp.c (simplify_stmt_using_ranges): Remove TRUTH_NOT_EXPR case.
TRUTH_NOT_EXPR case.
(simplify_truth_ops_using_ranges): Likewise. (simplify_truth_ops_using_ranges): Likewise.
(build_assert_expr_for): Likewise. (build_assert_expr_for): Likewise.
(build_assert_expr_for_1): Remove TRUTH_NOT_EXPR case (build_assert_expr_for_1): Remove TRUTH_NOT_EXPR case
and handle BIT_NOT_EXPR for truth-operation. and handle BIT_NOT_EXPR for truth-operation.
2011-07-28 Georg-Johann Lay <avr@gjlay.de> 2011-07-28 Georg-Johann Lay <avr@gjlay.de>
PR target/49313 PR target/49313
Undo r176835 from trunk Undo r176835 from trunk
2011-07-27 Georg-Johann Lay 2011-07-27 Georg-Johann Lay
2011-07-28 Georg-Johann Lay <avr@gjlay.de> 2011-07-28 Georg-Johann Lay <avr@gjlay.de>
PR target/49687 PR target/49687
* config/avr/t-avr (LIB1ASMFUNCS): Remove _xmulhisi3_exit. * config/avr/t-avr (LIB1ASMFUNCS): Remove _xmulhisi3_exit.
Add _muluhisi3, _mulshisi3, _usmulhisi3. Add _muluhisi3, _mulshisi3, _usmulhisi3.
......
...@@ -12327,11 +12327,12 @@ ...@@ -12327,11 +12327,12 @@
(call:DI (call:DI
(mem:QI (match_operand:DI 2 "constant_call_address_operand" "z")) (mem:QI (match_operand:DI 2 "constant_call_address_operand" "z"))
(match_operand:DI 3 "" ""))) (match_operand:DI 3 "" "")))
(unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)] UNSPEC_TLS_GD)]
"TARGET_64BIT" "TARGET_64BIT"
{ {
fputs (ASM_BYTE "0x66\n", asm_out_file); if (!TARGET_X32)
fputs (ASM_BYTE "0x66\n", asm_out_file);
output_asm_insn output_asm_insn
("lea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}", operands); ("lea{q}\t{%a1@tlsgd(%%rip), %%rdi|rdi, %a1@tlsgd[rip]}", operands);
fputs (ASM_SHORT "0x6666\n", asm_out_file); fputs (ASM_SHORT "0x6666\n", asm_out_file);
...@@ -12349,7 +12350,7 @@ ...@@ -12349,7 +12350,7 @@
(call:DI (call:DI
(mem:QI (match_operand:DI 2 "constant_call_address_operand" "")) (mem:QI (match_operand:DI 2 "constant_call_address_operand" ""))
(const_int 0))) (const_int 0)))
(unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_GD)])]) UNSPEC_TLS_GD)])])
(define_insn "*tls_local_dynamic_base_32_gnu" (define_insn "*tls_local_dynamic_base_32_gnu"
...@@ -12502,7 +12503,7 @@ ...@@ -12502,7 +12503,7 @@
ix86_tls_descriptor_calls_expanded_in_cfun = true; 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") [(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (match_operand:SI 1 "register_operand" "b") (plus:SI (match_operand:SI 1 "register_operand" "b")
(const:SI (const:SI
...@@ -12515,7 +12516,7 @@ ...@@ -12515,7 +12516,7 @@
(set_attr "length" "6") (set_attr "length" "6")
(set_attr "length_address" "4")]) (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") [(set (match_operand:SI 0 "register_operand" "=a")
(unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "") (unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")
(match_operand:SI 2 "register_operand" "0") (match_operand:SI 2 "register_operand" "0")
...@@ -12553,7 +12554,7 @@ ...@@ -12553,7 +12554,7 @@
(define_expand "tls_dynamic_gnu2_64" (define_expand "tls_dynamic_gnu2_64"
[(set (match_dup 2) [(set (match_dup 2)
(unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")] (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLSDESC)) UNSPEC_TLSDESC))
(parallel (parallel
[(set (match_operand:DI 0 "register_operand" "") [(set (match_operand:DI 0 "register_operand" "")
...@@ -12566,9 +12567,9 @@ ...@@ -12566,9 +12567,9 @@
ix86_tls_descriptor_calls_expanded_in_cfun = true; 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") [(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))] UNSPEC_TLSDESC))]
"TARGET_64BIT && TARGET_GNU2_TLS" "TARGET_64BIT && TARGET_GNU2_TLS"
"lea{q}\t{%a1@TLSDESC(%%rip), %0|%0, %a1@TLSDESC[rip]}" "lea{q}\t{%a1@TLSDESC(%%rip), %0|%0, %a1@TLSDESC[rip]}"
...@@ -12577,9 +12578,9 @@ ...@@ -12577,9 +12578,9 @@
(set_attr "length" "7") (set_attr "length" "7")
(set_attr "length_address" "4")]) (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") [(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") (match_operand:DI 2 "register_operand" "0")
(reg:DI SP_REG)] (reg:DI SP_REG)]
UNSPEC_TLSDESC)) UNSPEC_TLSDESC))
...@@ -12598,7 +12599,7 @@ ...@@ -12598,7 +12599,7 @@
(reg:DI SP_REG)] (reg:DI SP_REG)]
UNSPEC_TLSDESC) UNSPEC_TLSDESC)
(const:DI (unspec:DI (const:DI (unspec:DI
[(match_operand:DI 1 "tls_symbolic_operand" "")] [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_DTPOFF)))) UNSPEC_DTPOFF))))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && TARGET_GNU2_TLS" "TARGET_64BIT && TARGET_GNU2_TLS"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment