From: Richard Sandiford Date: Thu, 28 Aug 2014 06:21:54 +0000 (+0000) Subject: caller-save.c: Include rtl-iter.h. X-Git-Tag: upstream/12.2.0~60751 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1cb22a678b82b615b83780e683b4f002435a1349;p=platform%2Fupstream%2Fgcc.git caller-save.c: Include rtl-iter.h. gcc/ * caller-save.c: Include rtl-iter.h. (add_used_regs_1): Delete. (add_used_regs): Use FOR_EACH_SUBRTX rather than for_each_rtx to iterate over subrtxes. Assert that any remaining pseudos have been spilled. From-SVN: r214621 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f174c76..c9b89e4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2014-08-28 Richard Sandiford + * caller-save.c: Include rtl-iter.h. + (add_used_regs_1): Delete. + (add_used_regs): Use FOR_EACH_SUBRTX rather than for_each_rtx + to iterate over subrtxes. Assert that any remaining pseudos + have been spilled. + +2014-08-28 Richard Sandiford + * bt-load.c: Include rtl-iter.h. (btr_reference_found, find_btr_reference, btr_referenced_p): Delete. (find_btr_use): Move further up file. Use FOR_EACH_SUBRTX_PTR diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 8bdca51..d94343e 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. If not see #include "addresses.h" #include "ggc.h" #include "dumpfile.h" +#include "rtl-iter.h" #define MOVE_MAX_WORDS (MOVE_MAX / UNITS_PER_WORD) @@ -1336,36 +1337,26 @@ insert_save (struct insn_chain *chain, int before_p, int regno, return numregs - 1; } -/* A for_each_rtx callback used by add_used_regs. Add the hard-register - equivalent of each REG to regset DATA. */ - -static int -add_used_regs_1 (rtx *loc, void *data) -{ - unsigned int regno; - regset live; - rtx x; - - x = *loc; - live = (regset) data; - if (REG_P (x)) - { - regno = REGNO (x); - if (HARD_REGISTER_NUM_P (regno)) - bitmap_set_range (live, regno, hard_regno_nregs[regno][GET_MODE (x)]); - else - regno = reg_renumber[regno]; - } - return 0; -} - /* A note_uses callback used by insert_one_insn. Add the hard-register equivalent of each REG to regset DATA. */ static void add_used_regs (rtx *loc, void *data) { - for_each_rtx (loc, add_used_regs_1, data); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, *loc, NONCONST) + { + const_rtx x = *iter; + if (REG_P (x)) + { + unsigned int regno = REGNO (x); + if (HARD_REGISTER_NUM_P (regno)) + bitmap_set_range ((regset) data, regno, + hard_regno_nregs[regno][GET_MODE (x)]); + else + gcc_checking_assert (reg_renumber[regno] < 0); + } + } } /* Emit a new caller-save insn and set the code. */