diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2014-08-14 01:07:37 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2014-08-14 01:07:37 +0000 |
commit | 8039b16de7ec8a953c0209828fb94b0b263cf6c8 (patch) | |
tree | 348b444c92d68763e02087fcc44e7f77e7328680 /llvm/lib/MC/MCParser/AsmLexer.cpp | |
parent | 5601dc40b463f794f0bdff491a75f3ac15eb5fe2 (diff) | |
download | bcm5719-llvm-8039b16de7ec8a953c0209828fb94b0b263cf6c8.tar.gz bcm5719-llvm-8039b16de7ec8a953c0209828fb94b0b263cf6c8.zip |
[SDAG] Fix a case where we would iteratively legalize a node during
combining by replacing it with something else but not re-process the
node afterward to remove it.
In a truly remarkable stroke of bad luck, this would (in the test case
attached) end up getting some other node combined into it without ever
getting re-processed. By adding it back on to the worklist, in addition
to deleting the dead nodes more quickly we also ensure that if it
*stops* being dead for any reason it makes it back through the
legalizer. Without this, the test case will end up failing during
instruction selection due to an and node with a type we don't have an
instruction pattern for.
It took many million runs of the shuffle fuzz tester to find this.
llvm-svn: 215611
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmLexer.cpp')
0 files changed, 0 insertions, 0 deletions