llvm-6502/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
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
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
Passes.cpp
PHIElimination.cpp
PhysRegTracker.h
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
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