diff options
author | Radovan Obradovic <robradovic@mips.com> | 2014-04-25 11:21:18 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2014-04-25 11:21:18 +0000 |
commit | 356bf5934944d4259bf8feffed3f749c71fc2e37 (patch) | |
tree | 17d51591cd963cb85249cafcbb3755cfffa2cad8 | |
parent | fe65a7edc6f7a6b86e3f5c4f682b4bb48c429e85 (diff) | |
download | gcc-356bf5934944d4259bf8feffed3f749c71fc2e37.zip gcc-356bf5934944d4259bf8feffed3f749c71fc2e37.tar.gz gcc-356bf5934944d4259bf8feffed3f749c71fc2e37.tar.bz2 |
Add implicit parameter to find_all_hard_reg_sets
2014-04-25 Radovan Obradovic <robradovic@mips.com>
Tom de Vries <tom@codesourcery.com>
* rtlanal.c (find_all_hard_reg_sets): Add bool implicit parameter and
handle.
* rtl.h (find_all_hard_reg_sets): Add bool parameter.
* haifa-sched.c (recompute_todo_spec, check_clobbered_conditions): Add
new argument to find_all_hard_reg_sets call.
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r209798
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 4 | ||||
-rw-r--r-- | gcc/rtl.h | 2 | ||||
-rw-r--r-- | gcc/rtlanal.c | 4 |
4 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b43b317..4a0af82 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2014-04-25 Radovan Obradovic <robradovic@mips.com> + Tom de Vries <tom@codesourcery.com> + + * rtlanal.c (find_all_hard_reg_sets): Add bool implicit parameter and + handle. + * rtl.h (find_all_hard_reg_sets): Add bool parameter. + * haifa-sched.c (recompute_todo_spec, check_clobbered_conditions): Add + new argument to find_all_hard_reg_sets call. + 2014-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/aarch-common.c (aarch_rev16_shright_mask_imm_p): diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 2d66e5c..5d16b4d 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -1299,7 +1299,7 @@ recompute_todo_spec (rtx next, bool for_backtrack) { HARD_REG_SET t; - find_all_hard_reg_sets (prev, &t); + find_all_hard_reg_sets (prev, &t, true); if (TEST_HARD_REG_BIT (t, regno)) return HARD_DEP; if (prev == pro) @@ -3082,7 +3082,7 @@ check_clobbered_conditions (rtx insn) if ((current_sched_info->flags & DO_PREDICATION) == 0) return; - find_all_hard_reg_sets (insn, &t); + find_all_hard_reg_sets (insn, &t, true); restart: for (i = 0; i < ready.n_ready; i++) @@ -2042,7 +2042,7 @@ extern const_rtx set_of (const_rtx, const_rtx); extern void record_hard_reg_sets (rtx, const_rtx, void *); extern void record_hard_reg_uses (rtx *, void *); #ifdef HARD_CONST -extern void find_all_hard_reg_sets (const_rtx, HARD_REG_SET *); +extern void find_all_hard_reg_sets (const_rtx, HARD_REG_SET *, bool); #endif extern void note_stores (const_rtx, void (*) (rtx, const_rtx, void *), void *); extern void note_uses (rtx *, void (*) (rtx *, void *), void *); diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 98fbacc..284c475 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -1046,13 +1046,13 @@ record_hard_reg_sets (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data) /* Examine INSN, and compute the set of hard registers written by it. Store it in *PSET. Should only be called after reload. */ void -find_all_hard_reg_sets (const_rtx insn, HARD_REG_SET *pset) +find_all_hard_reg_sets (const_rtx insn, HARD_REG_SET *pset, bool implicit) { rtx link; CLEAR_HARD_REG_SET (*pset); note_stores (PATTERN (insn), record_hard_reg_sets, pset); - if (CALL_P (insn)) + if (implicit && CALL_P (insn)) IOR_HARD_REG_SET (*pset, call_used_reg_set); for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) if (REG_NOTE_KIND (link) == REG_INC) |