llvm-6502/lib
Chandler Carruth 53dd6f7830 [x86] Don't add nodes to the combined set (and prune subsequent
combines) until they are legal.

Doing it the old way could, when the stars align *just* right, cause
a node to get into the combine set prior to being legalized. Then, when
the same node showed up as an operand to another node later on (but not
so much later on that it had been deleted as dead) we would fail to add
it back to the worklist thinking it had already been combined. This
would in turn cause it to not be legalized. Fortunately, we can also
walk the operands looking for uncombined (and thus potentially
un-legalized) nodes late. It will still ensure that we walk all operands
of all nodes and send all of them through both the legalizer without
changes and the combiner at least once. (Which was the original goal of
this).

I have a test case for this bug, but it is terribly brittle. For
example, it will stop finding the bug the moment I enable the new
shuffle lowering. I don't yet have any test case that reliably exercises
this bug, and it isn't clear that it will be possible to craft one. It
is entirely possible that with the new shuffle lowering the two forms of
doing this are precisely equivalent. That doesn't mean we shouldn't take
the more conservative approach of insisting on things in the combined
set having survived the legalizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214673 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-03 23:10:59 +00:00
..
Analysis
AsmParser
Bitcode UseListOrder: Fix blockaddress use-list order 2014-08-01 22:27:19 +00:00
CodeGen [x86] Don't add nodes to the combined set (and prune subsequent 2014-08-03 23:10:59 +00:00
DebugInfo DWOHolder takes ownership of the argument constructor, use std::unique_ptr. 2014-07-31 20:26:42 +00:00
ExecutionEngine [MCJIT] Fix an overly-aggressive check in RuntimeDyldMachOARM. 2014-08-02 03:00:49 +00:00
IR IR: Add Value::reverseUseList() 2014-08-01 23:28:49 +00:00
IRReader
LineEditor
Linker
LTO
MC MC: virtualise EmitWindowsUnwindTables 2014-08-03 18:51:26 +00:00
Object
Option
ProfileData InstrProf: Allow multiple functions with the same name 2014-08-01 22:50:07 +00:00
Support Remove some calls to std::move. 2014-08-01 14:31:55 +00:00
TableGen
Target X86: silence warning (-Wparentheses) 2014-08-03 23:00:39 +00:00
Transforms [SimplifyCFG] fix accessing deleted PHINodes in switch-to-table conversion. 2014-08-02 23:41:54 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile