aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2017-11-17 14:46:04 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2017-11-17 14:46:04 +0000
commita585d69e36faf7a5521e63e60ac6ff18b0978e44 (patch)
tree790f4a75755e3d6b1e7d35f1096306ceaa0a535c /libgcc
parent01222fb3d4cc16e85af05a2cfd78ad9676d4380f (diff)
combine: Don't split insns if half is unused (PR82621)
If we have a PARALLEL of two SETs, and one half is unused, we currently happily split that into two instructions (although the unused one is useless). Worse, as PR82621 shows, combine will happily merge this insn into I3 even if some intervening insn sets the same register again, which is wrong. This fixes it by not splitting PARALLELs with REG_UNUSED notes. It all is handled fine by combine in that case: just the "single set that is unused" case isn't handled properly. This also results in better code: combine will now actually throw away the unused SET. (It still won't do that in an I3). PR rtl-optimization/82621 * combine.c (try_combine): Do not split PARALLELs of two SETs if the dest of one of those SETs is unused. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254874 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions