Commit e6c9b417 by Uros Bizjak Committed by Uros Bizjak

re PR target/58066 (__tls_get_addr is called with misaligned stack on x86-64)

	PR target/58066
	* config/i386/i386.md (*tls_global_dynamic_64_<mode>): Depend on SP_REG.
	(*tls_local_dynamic_base_64_<mode>): Ditto.
	(*tls_local_dynamic_base_64_largepic): Ditto.
	(tls_global_dynamic_64_<mode>): Update expander pattern.
	(tls_local_dynamic_base_64_<mode>): Ditto.

From-SVN: r225829
parent 28ef6a27
2015-07-15 Uros Bizjak <ubizjak@gmail.com>
PR target/58066
* config/i386/i386.md (*tls_global_dynamic_64_<mode>): Depend on SP_REG.
(*tls_local_dynamic_base_64_<mode>): Ditto.
(*tls_local_dynamic_base_64_largepic): Ditto.
(tls_global_dynamic_64_<mode>): Update expander pattern.
(tls_local_dynamic_base_64_<mode>): Ditto.
2015-07-15 Richard Biener <rguenther@suse.de> 2015-07-15 Richard Biener <rguenther@suse.de>
* fold-const.c (fold_binary_loc): Move bool_var != 0 -> bool_var * fold-const.c (fold_binary_loc): Move bool_var != 0 -> bool_var
......
...@@ -13158,7 +13158,8 @@ ...@@ -13158,7 +13158,8 @@
(call:P (call:P
(mem:QI (match_operand 2 "constant_call_address_operand" "Bz")) (mem:QI (match_operand 2 "constant_call_address_operand" "Bz"))
(match_operand 3))) (match_operand 3)))
(unspec:P [(match_operand 1 "tls_symbolic_operand")] (unspec:P [(match_operand 1 "tls_symbolic_operand")
(reg:P SP_REG)]
UNSPEC_TLS_GD)] UNSPEC_TLS_GD)]
"TARGET_64BIT" "TARGET_64BIT"
{ {
...@@ -13182,8 +13183,9 @@ ...@@ -13182,8 +13183,9 @@
(mem:QI (plus:DI (match_operand:DI 2 "register_operand" "b") (mem:QI (plus:DI (match_operand:DI 2 "register_operand" "b")
(match_operand:DI 3 "immediate_operand" "i"))) (match_operand:DI 3 "immediate_operand" "i")))
(match_operand 4))) (match_operand 4)))
(unspec:DI [(match_operand 1 "tls_symbolic_operand")] (unspec:DI [(match_operand 1 "tls_symbolic_operand")
UNSPEC_TLS_GD)] (reg:DI SP_REG)]
UNSPEC_TLS_GD)]
"TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF "TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF
&& GET_CODE (operands[3]) == CONST && GET_CODE (operands[3]) == CONST
&& GET_CODE (XEXP (operands[3], 0)) == UNSPEC && GET_CODE (XEXP (operands[3], 0)) == UNSPEC
...@@ -13204,7 +13206,8 @@ ...@@ -13204,7 +13206,8 @@
(call:P (call:P
(mem:QI (match_operand 2)) (mem:QI (match_operand 2))
(const_int 0))) (const_int 0)))
(unspec:P [(match_operand 1 "tls_symbolic_operand")] (unspec:P [(match_operand 1 "tls_symbolic_operand")
(reg:P SP_REG)]
UNSPEC_TLS_GD)])] UNSPEC_TLS_GD)])]
"TARGET_64BIT" "TARGET_64BIT"
"ix86_tls_descriptor_calls_expanded_in_cfun = true;") "ix86_tls_descriptor_calls_expanded_in_cfun = true;")
...@@ -13254,7 +13257,7 @@ ...@@ -13254,7 +13257,7 @@
(call:P (call:P
(mem:QI (match_operand 1 "constant_call_address_operand" "Bz")) (mem:QI (match_operand 1 "constant_call_address_operand" "Bz"))
(match_operand 2))) (match_operand 2)))
(unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)] (unspec:P [(reg:P SP_REG)] UNSPEC_TLS_LD_BASE)]
"TARGET_64BIT" "TARGET_64BIT"
{ {
output_asm_insn output_asm_insn
...@@ -13272,7 +13275,7 @@ ...@@ -13272,7 +13275,7 @@
(mem:QI (plus:DI (match_operand:DI 1 "register_operand" "b") (mem:QI (plus:DI (match_operand:DI 1 "register_operand" "b")
(match_operand:DI 2 "immediate_operand" "i"))) (match_operand:DI 2 "immediate_operand" "i")))
(match_operand 3))) (match_operand 3)))
(unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)] (unspec:DI [(reg:DI SP_REG)] UNSPEC_TLS_LD_BASE)]
"TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF "TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF
&& GET_CODE (operands[2]) == CONST && GET_CODE (operands[2]) == CONST
&& GET_CODE (XEXP (operands[2], 0)) == UNSPEC && GET_CODE (XEXP (operands[2], 0)) == UNSPEC
...@@ -13293,7 +13296,7 @@ ...@@ -13293,7 +13296,7 @@
(call:P (call:P
(mem:QI (match_operand 1)) (mem:QI (match_operand 1))
(const_int 0))) (const_int 0)))
(unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)])] (unspec:P [(reg:P SP_REG)] UNSPEC_TLS_LD_BASE)])]
"TARGET_64BIT" "TARGET_64BIT"
"ix86_tls_descriptor_calls_expanded_in_cfun = true;") "ix86_tls_descriptor_calls_expanded_in_cfun = true;")
......
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