diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-05-17 18:32:42 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-05-17 18:32:42 +0000 |
commit | c3553ffc70ac8196629bc1d19b3186399e883a03 (patch) | |
tree | 59fc1f50bc2f7f9e4c72d3ea4c4cf1995b84784a /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | 14a87459906408ef325940b07bcf5fea3183f5fe (diff) | |
download | llvm-c3553ffc70ac8196629bc1d19b3186399e883a03.zip llvm-c3553ffc70ac8196629bc1d19b3186399e883a03.tar.gz llvm-c3553ffc70ac8196629bc1d19b3186399e883a03.tar.bz2 |
Never clear <undef> flags on already joined copies.
RegisterCoalescer set <undef> flags on all operands of copy instructions
that are scheduled to be removed. This is so they won't affect
shrinkToUses() by introducing false register reads.
Make sure those <undef> flags are never cleared, or shrinkToUses() could
cause live intervals to end at instructions about to be deleted.
This would be a lot simpler if RegisterCoalescer could just erase joined
copies immediately instead of keeping all the to-be-deleted instructions
around.
This fixes PR12862. Unfortunately, bugpoint can't create a sane test
case for this. Like many other coalescer problems, this failure depends
of a very fragile series of events.
<rdar://problem/11474428>
llvm-svn: 157001
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
0 files changed, 0 insertions, 0 deletions