Avoid PR72749 by not using unspecs
authorAlan Modra <amodra@gcc.gnu.org>
Sat, 14 Jan 2017 13:24:46 +0000 (23:54 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Sat, 14 Jan 2017 13:24:46 +0000 (23:54 +1030)
commitd6b251481d16865e3ebb4e6075f99c2c484e4c72
tree364027b7a18ed0f254e4edbce192537dc2713f10
parentac4664f9da074d5e146102142cd2bf3bcde17b33
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
gcc/ChangeLog
gcc/combine.c
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md