diff options
author | Alan Modra <amodra@gcc.gnu.org> | 2017-01-14 23:54:46 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2017-01-14 23:54:46 +1030 |
commit | d6b251481d16865e3ebb4e6075f99c2c484e4c72 (patch) | |
tree | 364027b7a18ed0f254e4edbce192537dc2713f10 /gcc/combine.c | |
parent | ac4664f9da074d5e146102142cd2bf3bcde17b33 (diff) | |
download | gcc-d6b251481d16865e3ebb4e6075f99c2c484e4c72.zip gcc-d6b251481d16865e3ebb4e6075f99c2c484e4c72.tar.gz gcc-d6b251481d16865e3ebb4e6075f99c2c484e4c72.tar.bz2 |
Avoid PR72749 by not using unspecs
Rather than using unspecs in doloop insns to stop combine creating
these insns, use legitimate_combined_insn.
PR target/72749
* combine.c (recog_for_combine_1): Set INSN_CODE before calling
target legitimate_combined_insn.
* config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
(rs6000_legitimate_combined_insn): New function.
* config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
all uses.
(ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
(ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
(ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
From-SVN: r244465
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 3598045..28133ff 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -11201,6 +11201,7 @@ recog_for_combine_1 (rtx *pnewpat, rtx_insn *insn, rtx *pnotes) old_icode = INSN_CODE (insn); PATTERN (insn) = pat; REG_NOTES (insn) = notes; + INSN_CODE (insn) = insn_code_number; /* Allow targets to reject combined insn. */ if (!targetm.legitimate_combined_insn (insn)) |