llvm/lib/CodeGen
Chris Lattner 729c6d1da8 Fix a nasty dag combiner bug that caused nondeterminstic crashes (MY FAVORITE!):
SimplifySelectOps would eliminate a Select, delete it, then return true.

The clients would see that it did something and return null.

The top level would see a null return, and decide that nothing happened,
proceeding to process the node in other ways: boom.

The fix is simple: clients of SimplifySelectOps should return the select
node itself.

In order to catch really obnoxious boogs like this in the future, add an
assert that nodes are not deleted.  We do this by checking for a sentry node
type that the SDNode dtor sets when a node is destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28514 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-27 00:43:02 +00:00
..
SelectionDAG Fix a nasty dag combiner bug that caused nondeterminstic crashes (MY FAVORITE!): 2006-05-27 00:43:02 +00:00
AsmPrinter.cpp Remove dead var 2006-05-12 17:50:35 +00:00
BranchFolding.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
DwarfWriter.cpp Refactor a bunch of includes so that TargetMachine.h doesn't have to include 2006-05-12 06:33:49 +00:00
ELFWriter.cpp Refactor a bunch of includes so that TargetMachine.h doesn't have to include 2006-05-12 06:33:49 +00:00
IntrinsicLowering.cpp Handle new forms of llvm.dbg intrinsics. 2006-03-23 18:06:46 +00:00
LiveInterval.cpp Fix LiveInterval::getOverlapingRanges to take things in the right order 2005-10-21 06:41:30 +00:00
LiveIntervalAnalysis.cpp Patches to make the LLVM sources more -pedantic clean. Patch provided 2006-05-24 17:04:05 +00:00
LiveVariables.cpp Remove a bunch more dead V9 specific stuff 2006-05-04 01:26:39 +00:00
MachineBasicBlock.cpp Refactor a bunch of includes so that TargetMachine.h doesn't have to include 2006-05-12 06:33:49 +00:00
MachineDebugInfo.cpp Expand some code with temporary variables to rid ourselves of the warning 2006-04-13 18:29:58 +00:00
MachineFunction.cpp Print the vreg that livein physregs are live in 2006-05-16 05:55:30 +00:00
MachineInstr.cpp Remove a bogus cast. 2006-05-26 08:00:14 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
Passes.cpp Alkis agrees that that iterative scan allocator isn't going to be worked on 2005-10-24 04:14:30 +00:00
PHIElimination.cpp Add support for targets (like Alpha) that have terminator instructions which 2006-01-04 07:12:21 +00:00
PhysRegTracker.h Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr 2004-02-23 06:10:13 +00:00
PrologEpilogInserter.cpp Remove dead variable 2006-05-12 18:02:04 +00:00
RegAllocLinearScan.cpp If the register allocator cannot find a register to spill, try the aliases. If 2006-05-12 19:07:46 +00:00
RegAllocLocal.cpp Move some methods out of MachineInstr into MachineOperand 2006-05-04 17:52:23 +00:00
RegAllocSimple.cpp Move some methods out of MachineInstr into MachineOperand 2006-05-04 17:52:23 +00:00
TwoAddressInstructionPass.cpp Patches to make the LLVM sources more -pedantic clean. Patch provided 2006-05-24 17:04:05 +00:00
UnreachableBlockElim.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
VirtRegMap.cpp Move some methods out of MachineInstr into MachineOperand 2006-05-04 17:52:23 +00:00
VirtRegMap.h Fix a latent bug that my spiller patch last week exposed: we were leaving 2006-05-01 22:03:24 +00:00