Commit 62a1c041 by Uros Bizjak Committed by Uros Bizjak

predicates.md (tls_symbolic_operand): Declare as special predicate.

	* config/i386/predicates.md (tls_symbolic_operand): Declare as
	special predicate.
	(tls_modbase_operand): Ditto.
	* config/i386/i386.md: Remove mode from tls_symbolic_operand and
	tls_modbase_operand predicates.

From-SVN: r185341
parent 7e9e7e6c
2012-03-13 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (tls_symbolic_operand): Declare as
special predicate.
(tls_modbase_operand): Ditto.
* config/i386/i386.md: Remove mode from tls_symbolic_operand and
tls_modbase_operand predicates.
2012-03-13 Martin Jambor <mjambor@suse.cz> 2012-03-13 Martin Jambor <mjambor@suse.cz>
* expr.c (expand_assignment): Handle misaligned scalar writes to * expr.c (expand_assignment): Handle misaligned scalar writes to
......
...@@ -12591,7 +12591,7 @@ ...@@ -12591,7 +12591,7 @@
[(set (match_operand:SI 0 "register_operand" "=a") [(set (match_operand:SI 0 "register_operand" "=a")
(unspec:SI (unspec:SI
[(match_operand:SI 1 "register_operand" "b") [(match_operand:SI 1 "register_operand" "b")
(match_operand:SI 2 "tls_symbolic_operand" "") (match_operand 2 "tls_symbolic_operand" "")
(match_operand:SI 3 "constant_call_address_operand" "z")] (match_operand:SI 3 "constant_call_address_operand" "z")]
UNSPEC_TLS_GD)) UNSPEC_TLS_GD))
(clobber (match_scratch:SI 4 "=d")) (clobber (match_scratch:SI 4 "=d"))
...@@ -12616,7 +12616,7 @@ ...@@ -12616,7 +12616,7 @@
[(parallel [(parallel
[(set (match_operand:SI 0 "register_operand" "") [(set (match_operand:SI 0 "register_operand" "")
(unspec:SI [(match_operand:SI 2 "register_operand" "") (unspec:SI [(match_operand:SI 2 "register_operand" "")
(match_operand:SI 1 "tls_symbolic_operand" "") (match_operand 1 "tls_symbolic_operand" "")
(match_operand:SI 3 "constant_call_address_operand" "")] (match_operand:SI 3 "constant_call_address_operand" "")]
UNSPEC_TLS_GD)) UNSPEC_TLS_GD))
(clobber (match_scratch:SI 4 "")) (clobber (match_scratch:SI 4 ""))
...@@ -12727,7 +12727,7 @@ ...@@ -12727,7 +12727,7 @@
(match_operand:SI 2 "constant_call_address_operand" "z")] (match_operand:SI 2 "constant_call_address_operand" "z")]
UNSPEC_TLS_LD_BASE) UNSPEC_TLS_LD_BASE)
(const:SI (unspec:SI (const:SI (unspec:SI
[(match_operand:SI 3 "tls_symbolic_operand" "")] [(match_operand 3 "tls_symbolic_operand" "")]
UNSPEC_DTPOFF)))) UNSPEC_DTPOFF))))
(clobber (match_scratch:SI 4 "=d")) (clobber (match_scratch:SI 4 "=d"))
(clobber (match_scratch:SI 5 "=c")) (clobber (match_scratch:SI 5 "=c"))
...@@ -12825,7 +12825,7 @@ ...@@ -12825,7 +12825,7 @@
(define_insn "tls_initial_exec_64_sun" (define_insn "tls_initial_exec_64_sun"
[(set (match_operand:DI 0 "register_operand" "=a") [(set (match_operand:DI 0 "register_operand" "=a")
(unspec:DI (unspec:DI
[(match_operand:DI 1 "tls_symbolic_operand" "")] [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_IE_SUN)) UNSPEC_TLS_IE_SUN))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
"TARGET_64BIT && TARGET_SUN_TLS" "TARGET_64BIT && TARGET_SUN_TLS"
...@@ -12847,7 +12847,7 @@ ...@@ -12847,7 +12847,7 @@
(define_insn "tls_initial_exec_x32" (define_insn "tls_initial_exec_x32"
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(unspec:SI (unspec:SI
[(match_operand:SI 1 "tls_symbolic_operand" "")] [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLS_IE_X32)) UNSPEC_TLS_IE_X32))
(clobber (reg:CC FLAGS_REG))] (clobber (reg:CC FLAGS_REG))]
"TARGET_X32" "TARGET_X32"
...@@ -12864,7 +12864,7 @@ ...@@ -12864,7 +12864,7 @@
[(set (match_dup 3) [(set (match_dup 3)
(plus:SI (match_operand:SI 2 "register_operand" "") (plus:SI (match_operand:SI 2 "register_operand" "")
(const:SI (const:SI
(unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")] (unspec:SI [(match_operand 1 "tls_symbolic_operand" "")]
UNSPEC_TLSDESC)))) UNSPEC_TLSDESC))))
(parallel (parallel
[(set (match_operand:SI 0 "register_operand" "") [(set (match_operand:SI 0 "register_operand" "")
...@@ -12882,7 +12882,7 @@ ...@@ -12882,7 +12882,7 @@
[(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
(unspec:SI [(match_operand:SI 2 "tls_symbolic_operand" "")] (unspec:SI [(match_operand 2 "tls_symbolic_operand" "")]
UNSPEC_TLSDESC))))] UNSPEC_TLSDESC))))]
"!TARGET_64BIT && TARGET_GNU2_TLS" "!TARGET_64BIT && TARGET_GNU2_TLS"
"lea{l}\t{%E2@TLSDESC(%1), %0|%0, %E2@TLSDESC[%1]}" "lea{l}\t{%E2@TLSDESC(%1), %0|%0, %E2@TLSDESC[%1]}"
...@@ -12893,7 +12893,7 @@ ...@@ -12893,7 +12893,7 @@
(define_insn "*tls_dynamic_gnu2_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 1 "tls_symbolic_operand" "")
(match_operand:SI 2 "register_operand" "0") (match_operand:SI 2 "register_operand" "0")
;; we have to make sure %ebx still points to the GOT ;; we have to make sure %ebx still points to the GOT
(match_operand:SI 3 "register_operand" "b") (match_operand:SI 3 "register_operand" "b")
...@@ -12909,13 +12909,13 @@ ...@@ -12909,13 +12909,13 @@
(define_insn_and_split "*tls_dynamic_gnu2_combine_32" (define_insn_and_split "*tls_dynamic_gnu2_combine_32"
[(set (match_operand:SI 0 "register_operand" "=&a") [(set (match_operand:SI 0 "register_operand" "=&a")
(plus:SI (plus:SI
(unspec:SI [(match_operand:SI 3 "tls_modbase_operand" "") (unspec:SI [(match_operand 3 "tls_modbase_operand" "")
(match_operand:SI 4 "" "") (match_operand:SI 4 "" "")
(match_operand:SI 2 "register_operand" "b") (match_operand:SI 2 "register_operand" "b")
(reg:SI SP_REG)] (reg:SI SP_REG)]
UNSPEC_TLSDESC) UNSPEC_TLSDESC)
(const:SI (unspec:SI (const:SI (unspec:SI
[(match_operand:SI 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"
...@@ -12969,7 +12969,7 @@ ...@@ -12969,7 +12969,7 @@
(define_insn_and_split "*tls_dynamic_gnu2_combine_64" (define_insn_and_split "*tls_dynamic_gnu2_combine_64"
[(set (match_operand:DI 0 "register_operand" "=&a") [(set (match_operand:DI 0 "register_operand" "=&a")
(plus:DI (plus:DI
(unspec:DI [(match_operand:DI 2 "tls_modbase_operand" "") (unspec:DI [(match_operand 2 "tls_modbase_operand" "")
(match_operand:DI 3 "" "") (match_operand:DI 3 "" "")
(reg:DI SP_REG)] (reg:DI SP_REG)]
UNSPEC_TLSDESC) UNSPEC_TLSDESC)
......
...@@ -491,11 +491,11 @@ ...@@ -491,11 +491,11 @@
(match_operand 0 "local_symbolic_operand"))) (match_operand 0 "local_symbolic_operand")))
;; Test for various thread-local symbols. ;; Test for various thread-local symbols.
(define_predicate "tls_symbolic_operand" (define_special_predicate "tls_symbolic_operand"
(and (match_code "symbol_ref") (and (match_code "symbol_ref")
(match_test "SYMBOL_REF_TLS_MODEL (op)"))) (match_test "SYMBOL_REF_TLS_MODEL (op)")))
(define_predicate "tls_modbase_operand" (define_special_predicate "tls_modbase_operand"
(and (match_code "symbol_ref") (and (match_code "symbol_ref")
(match_test "op == ix86_tls_module_base ()"))) (match_test "op == ix86_tls_module_base ()")))
......
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