diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2014-11-02 20:00:25 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2014-11-02 20:00:25 +0000 |
commit | 24dbe738d34175ca5192f4ff95cec3b81c99262a (patch) | |
tree | b3f103c42806b398e186c2a9c24af1c27a84d6aa | |
parent | 36cc625486bfd698ecb35f68c241a50b7ab999c7 (diff) | |
download | gcc-24dbe738d34175ca5192f4ff95cec3b81c99262a.zip gcc-24dbe738d34175ca5192f4ff95cec3b81c99262a.tar.gz gcc-24dbe738d34175ca5192f4ff95cec3b81c99262a.tar.bz2 |
arc.c (write_ext_corereg_1): Delete.
gcc/
* config/arc/arc.c (write_ext_corereg_1): Delete.
(arc_write_ext_corereg): Use FOR_EACH_SUBRTX.
From-SVN: r217019
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arc/arc.c | 40 |
2 files changed, 23 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d00f01..9aa585e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2014-11-02 Richard Sandiford <richard.sandiford@arm.com> + * config/arc/arc.c (write_ext_corereg_1): Delete. + (arc_write_ext_corereg): Use FOR_EACH_SUBRTX. + +2014-11-02 Richard Sandiford <richard.sandiford@arm.com> + * config/arc/arc.c (arc600_corereg_hazard_1): Delete. (arc600_corereg_hazard): Use FOR_EACH_SUBRTX. diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index ba0670d..0f3825e 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -8441,34 +8441,30 @@ arc_predicate_delay_insns (void) be hoisted out into a delay slot, a basic block can also be emptied this way, and branch and/or fall through targets be redirected. Hence we don't want such writes in a delay slot. */ -/* Called by arc_write_ext_corereg via for_each_rtx. */ - -static int -write_ext_corereg_1 (rtx *xp, void *data ATTRIBUTE_UNUSED) -{ - rtx x = *xp; - rtx dest; - - switch (GET_CODE (x)) - { - case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC: - break; - default: - /* This is also fine for PRE/POST_MODIFY, because they contain a SET. */ - return 0; - } - dest = XEXP (x, 0); - if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61) - return 1; - return 0; -} /* Return nonzreo iff INSN writes to an extension core register. */ int arc_write_ext_corereg (rtx insn) { - return for_each_rtx (&PATTERN (insn), write_ext_corereg_1, 0); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, PATTERN (insn), NONCONST) + { + const_rtx x = *iter; + switch (GET_CODE (x)) + { + case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC: + break; + default: + /* This is also fine for PRE/POST_MODIFY, because they + contain a SET. */ + continue; + } + const_rtx dest = XEXP (x, 0); + if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61) + return 1; + } + return 0; } /* This is like the hook, but returns NULL when it can't / won't generate |