diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2015-08-07 16:18:09 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2015-08-07 09:18:09 -0700 |
commit | 8f3f5ac089f8850f64dad253bc54e31f450e9ddf (patch) | |
tree | e6b6eb42328572e63f292ea0725c48ed8916349c /gcc/sched-deps.c | |
parent | 0e360db97091f31bf8a16ec50e99b31ebe6c52e1 (diff) | |
download | gcc-8f3f5ac089f8850f64dad253bc54e31f450e9ddf.zip gcc-8f3f5ac089f8850f64dad253bc54e31f450e9ddf.tar.gz gcc-8f3f5ac089f8850f64dad253bc54e31f450e9ddf.tar.bz2 |
Add alternative_mask to ira_implicitly_set_insn_hard_regs
Since ira_implicitly_set_insn_hard_regs may be called outside of
ira-lives.c, it can't use the local variable, preferred_alternatives.
This patch adds an alternative_mask argument to
ira_implicitly_set_insn_hard_regs.
gcc/
PR rtl-optimization/67029
* ira-color.c: Include "recog.h" before including "ira-int.h".
* target-globals.c: Likewise.
* ira-lives.c (ira_implicitly_set_insn_hard_regs): Add an
adds an alternative_mask argument and use it instead of
preferred_alternatives.
* ira.h (ira_implicitly_set_insn_hard_regs): Moved to ...
* ira-int.h (ira_implicitly_set_insn_hard_regs): Here.
* sched-deps.c: Include "ira-int.h" after including "ira.h".
(sched_analyze_insn): Update call to
ira_implicitly_set_insn_hard_regs.
* sel-sched.c: Include "ira-int.h" after including "ira.h".
(implicit_clobber_conflict_p): Update call to
ira_implicitly_set_insn_hard_regs.
gcc/testsuite/
PR rtl-optimization/67029
* gcc.dg/pr67029.c: New test.
From-SVN: r226724
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 3ac66e8..0a8dcb0 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see #include "alloc-pool.h" #include "cselib.h" #include "ira.h" +#include "ira-int.h" #include "target.h" #ifdef INSN_SCHEDULING @@ -2891,7 +2892,8 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx_insn *insn) extract_insn (insn); preprocess_constraints (insn); - ira_implicitly_set_insn_hard_regs (&temp); + alternative_mask prefrred = get_preferred_alternatives (insn); + ira_implicitly_set_insn_hard_regs (&temp, prefrred); AND_COMPL_HARD_REG_SET (temp, ira_no_alloc_regs); IOR_HARD_REG_SET (implicit_reg_pending_clobbers, temp); } |