llvm-6502/include/llvm/CodeGen
Duncan Sands edfcf598fa Sometimes (rarely) nodes held in LegalizeTypes
maps can be deleted.  This happens when RAUW
replaces a node N with another equivalent node
E, deleting the first node.  Solve this by
adding (N, E) to ReplacedNodes, which is already
used to remap nodes to replacements.  This means
that deleted nodes are being allowed in maps,
which can be delicate: the memory may be reused
for a new node which might get confused with the
old deleted node pointer hanging around in the
maps, so detect this and flush out maps if it
occurs (ExpungeNode).  The expunging operation
is expensive, however it never occurs during
a llvm-gcc bootstrap or anywhere in the nightly
testsuite.  It occurs three times in "make check":
Alpha/illegal-element-type.ll,
PowerPC/illegal-element-type.ll and
X86/mmx-shift.ll.  If expunging proves to be too
expensive then there are other more complicated
ways of solving the problem.
In the normal case this patch adds the overhead
of a few more map lookups, which is hopefully
negligable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52214 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-11 11:42:12 +00:00
..
AsmPrinter.h Change packed struct layout so that field sizes 2008-06-04 08:21:45 +00:00
BreakCriticalMachineEdge.h Fixes for BreakCriticalMachineCodeEdge by Fernando. 2008-01-27 19:51:03 +00:00
CallingConvLower.h Wrap MVT::ValueType in a struct to get type safety 2008-06-06 12:08:01 +00:00
Collector.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
CollectorMetadata.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
Collectors.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
DAGISelHeader.h Sometimes (rarely) nodes held in LegalizeTypes 2008-06-11 11:42:12 +00:00
DwarfWriter.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ELFRelocation.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
FileWriters.h Use PassManagerBase instead of FunctionPassManager for functions 2008-03-11 22:29:46 +00:00
IntrinsicLowering.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
LinkAllCodegenComponents.h Setting GlobalDirective in TargetAsmInfo by default rather than 2008-01-07 02:31:11 +00:00
LiveInterval.h Add a stack slot coloring pass. Not yet enabled. 2008-06-04 09:18:41 +00:00
LiveIntervalAnalysis.h Refine stack slot interval weight computation. 2008-06-06 07:54:39 +00:00
LiveStackAnalysis.h Add a stack slot coloring pass. Not yet enabled. 2008-06-04 09:18:41 +00:00
LiveVariables.h Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme. 2008-04-16 09:46:40 +00:00
MachineBasicBlock.h For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
MachineCodeEmitter.h Prune and tidy #includes. 2008-05-29 19:52:31 +00:00
MachineConstantPool.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineDominators.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineFrameInfo.h Add a stack slot coloring pass. Not yet enabled. 2008-06-04 09:18:41 +00:00
MachineFunction.h Fix more -Wshorten-64-to-32 warnings. 2008-05-05 18:30:58 +00:00
MachineFunctionPass.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineInstr.h Prune and tidy #includes. 2008-05-29 19:52:31 +00:00
MachineInstrBuilder.h Rename MemOperand to MachineMemOperand. This was suggested by 2008-04-07 19:35:22 +00:00
MachineJumpTableInfo.h Fix more -Wshorten-64-to-32 warnings. 2008-05-05 18:30:58 +00:00
MachineLocation.h Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
MachineLoopInfo.h Remove uses of llvm/System/IncludeFile.h that are no longer needed. 2008-05-06 01:32:53 +00:00
MachineMemOperand.h Rename MemOperand to MachineMemOperand. This was suggested by 2008-04-07 19:35:22 +00:00
MachineModuleInfo.h Fix more -Wshorten-64-to-32 warnings. 2008-05-05 18:30:58 +00:00
MachineOperand.h Prune and tidy #includes. 2008-05-29 19:52:31 +00:00
MachinePassRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
MachineRegisterInfo.h For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
MachineRelocation.h Revert 51775. 2008-05-30 22:47:19 +00:00
MachORelocation.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
Passes.h Add a stack slot coloring pass. Not yet enabled. 2008-06-04 09:18:41 +00:00
PseudoSourceValue.h Follow Chris' suggestion; change the PseudoSourceValue accessors 2008-02-07 18:41:25 +00:00
RegAllocRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
RegisterCoalescer.h Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
RegisterScavenging.h Allow registers defined by implicit_def to be clobbered. 2008-04-10 23:47:53 +00:00
RuntimeLibcalls.h Implement more support for fp-to-i128 and i128-to-fp conversions. 2008-03-10 23:03:31 +00:00
SchedGraphCommon.h For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
ScheduleDAG.h Remove warnings about unused parameters and shadowed variables. 2008-05-19 20:15:12 +00:00
SchedulerRegistry.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
SelectionDAG.h Sometimes (rarely) nodes held in LegalizeTypes 2008-06-11 11:42:12 +00:00
SelectionDAGISel.h Wrap MVT::ValueType in a struct to get type safety 2008-06-06 12:08:01 +00:00
SelectionDAGNodes.h Wrap MVT::ValueType in a struct to get type safety 2008-06-06 12:08:01 +00:00
ValueTypes.h Small doc fix. 2008-06-10 20:54:01 +00:00
ValueTypes.td remove attribution from a variety of miscellaneous files. 2007-12-29 22:59:10 +00:00