re PR target/69713 (Invalid code of optimization in SH)
gcc/ PR target/69713 * config/sh/sh.md (casesi_worker_0): Add T_REG use. From-SVN: r233324
This commit is contained in:
parent
281a11eb25
commit
3a71ddbcad
|
@ -1,3 +1,8 @@
|
|||
2016-02-11 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
PR target/69713
|
||||
* config/sh/sh.md (casesi_worker_0): Add T_REG use.
|
||||
|
||||
2016-02-11 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR rtl-optimization/69291
|
||||
|
|
|
@ -11707,12 +11707,16 @@ label:
|
|||
;; ??? reload might clobber r0 if we use it explicitly in the RTL before
|
||||
;; reload; using a R0_REGS pseudo reg is likely to give poor code.
|
||||
;; So we keep the use of r0 hidden in a R0_REGS clobber until after reload.
|
||||
;;
|
||||
;; The use on the T_REG in the casesi_worker* patterns links the bounds
|
||||
;; checking insns and the table memory access. See also PR 69713.
|
||||
(define_insn "casesi_worker_0"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r")
|
||||
(unspec:SI [(match_operand:SI 1 "register_operand" "0,r")
|
||||
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
|
||||
(clobber (match_scratch:SI 3 "=X,1"))
|
||||
(clobber (match_scratch:SI 4 "=&z,z"))]
|
||||
(clobber (match_scratch:SI 4 "=&z,z"))
|
||||
(use (reg:SI T_REG))]
|
||||
"TARGET_SH1"
|
||||
"#")
|
||||
|
||||
|
@ -11721,7 +11725,8 @@ label:
|
|||
(unspec:SI [(match_operand:SI 1 "register_operand" "")
|
||||
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
|
||||
(clobber (match_scratch:SI 3 ""))
|
||||
(clobber (match_scratch:SI 4 ""))]
|
||||
(clobber (match_scratch:SI 4))
|
||||
(use (reg:SI T_REG))]
|
||||
"TARGET_SH1 && ! TARGET_SH2 && reload_completed"
|
||||
[(set (reg:SI R0_REG) (unspec:SI [(label_ref (match_dup 2))] UNSPEC_MOVA))
|
||||
(parallel [(set (match_dup 0)
|
||||
|
@ -11739,7 +11744,8 @@ label:
|
|||
(unspec:SI [(match_operand:SI 1 "register_operand" "")
|
||||
(label_ref (match_operand 2 "" ""))] UNSPEC_CASESI))
|
||||
(clobber (match_scratch:SI 3 ""))
|
||||
(clobber (match_scratch:SI 4 ""))]
|
||||
(clobber (match_scratch:SI 4))
|
||||
(use (reg:SI T_REG))]
|
||||
"TARGET_SH2 && reload_completed"
|
||||
[(set (reg:SI R0_REG) (unspec:SI [(label_ref (match_dup 2))] UNSPEC_MOVA))
|
||||
(parallel [(set (match_dup 0)
|
||||
|
|
Loading…
Reference in New Issue