* [SH][committed] Fix PR 69713
@ 2016-02-11 9:33 Oleg Endo
0 siblings, 0 replies; only message in thread
From: Oleg Endo @ 2016-02-11 9:33 UTC (permalink / raw)
To: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 412 bytes --]
Hi,
The attached patch fixes PR 69713. For details please see the comments
in the PR.
Tested on trunk and sh-elf with
make -k check RUNTESTFLAGS="--target_board=sh-sim\{-m2/-ml,-m2/-mb,
-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}"
Committed to trunk as r233324, 5 branch as r233326 and 4.9 branch as
r233329.
Cheers,
Oleg
gcc/ChangeLog
PR target/69713
* config/sh/sh.md (casesi_worker_0): Add T_REG use.
[-- Attachment #2: sh_pr69713.patch --]
[-- Type: text/x-patch, Size: 1822 bytes --]
Index: gcc/config/sh/sh.md
===================================================================
--- gcc/config/sh/sh.md (revision 233314)
+++ gcc/config/sh/sh.md (working copy)
@@ -11707,12 +11707,16 @@
;; ??? 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 @@
(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 @@
(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)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-02-11 9:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-11 9:33 [SH][committed] Fix PR 69713 Oleg Endo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).