llvm-6502/include/llvm/CodeGen
Arnold Schwaighofer 75e36e847e ScheduleDAGInstrs: In functions with tail calls PseudoSourceValues are not non-aliasing distinct objects
The code that builds the dependence graph assumes that two PseudoSourceValues
don't alias. In a tail calling function two FixedStackObjects might refer to the
same location. Worse 'immutable' fixed stack objects like function arguments are
not immutable and will be clobbered.

Change this so that a load from a FixedStackObject is not invariant in a tail
calling function and don't return a PseudoSourceValue for an instruction in tail
calling functions when building the dependence graph so that we handle function
arguments conservatively.

Fix for PR23459.

rdar://20740035

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236916 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-08 23:52:00 +00:00
..
PBQP [PBQP] NDEBUG guards added around code needed for assert. 2015-02-17 07:45:06 +00:00
Analysis.h Fold a loop for array processing in ComputeLinearIndex 2015-01-14 05:33:01 +00:00
AsmPrinter.h [AsmPrinter] Make AsmPrinter's OutStreamer member a unique_ptr. 2015-04-24 19:11:51 +00:00
BasicTTIImpl.h [X86] Disable loop unrolling in loop vectorization pass when VF is 1. 2015-05-06 17:12:25 +00:00
CalcSpillWeights.h
CallingConvLower.h ARM: treat [N x i32] and [N x i64] as AAPCS composite types 2015-02-24 17:22:34 +00:00
CommandFlags.h Let llc and opt override "-target-cpu" and "-target-features" via command line 2015-05-06 23:54:14 +00:00
DAGCombine.h
DFAPacketizer.h
DIE.h Add DIEInteger::setValue() method. 2015-03-06 23:22:46 +00:00
EdgeBundles.h
FastISel.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
FunctionLoweringInfo.h [SEH] Implement GetExceptionCode in __except blocks 2015-04-24 20:25:05 +00:00
GCMetadata.h Revert GCStrategy ownership changes 2015-01-26 18:26:35 +00:00
GCMetadataPrinter.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
GCs.h clang-format all the GC related files (NFC) 2015-01-16 23:16:12 +00:00
GCStrategy.h [gcroot] Remove unused items from an enum 2015-04-02 05:02:16 +00:00
IntrinsicLowering.h
ISDOpcodes.h Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
LatencyPriorityQueue.h Remove LatencyPriorityQueue::dump because it relies on an implicit copy ctor which is deprecated in C++11 (due to the presence of a user-declare dtor in the base class) 2015-03-03 21:16:56 +00:00
LexicalScopes.h IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h Recommit r231168: unique_ptrify LiveRange::segmentSet 2015-03-04 01:20:33 +00:00
LiveIntervalAnalysis.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LiveIntervalUnion.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
LivePhysRegs.h Refactor UpdatePredRedefs and StepForward to avoid duplication. NFC 2015-05-05 20:14:22 +00:00
LiveRangeEdit.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
LiveRegMatrix.h
LiveStackAnalysis.h Recommit r231175: Change LiveStackAnalysis::SS2IntervalMap from std::map to std::unordered_map 2015-03-04 01:15:53 +00:00
LiveVariables.h
MachineBasicBlock.h
MachineBlockFrequencyInfo.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineBranchProbabilityInfo.h
MachineCombinerPattern.h
MachineConstantPool.h
MachineDominanceFrontier.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineFrameInfo.h ScheduleDAGInstrs: In functions with tail calls PseudoSourceValues are not non-aliasing distinct objects 2015-05-08 23:52:00 +00:00
MachineFunction.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineFunctionAnalysis.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineFunctionPass.h
MachineInstr.h IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
MachineInstrBuilder.h IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineMemOperand.h [BranchFolding] Remove MMOs during tail merge to preserve dependencies. 2015-03-10 16:22:52 +00:00
MachineModuleInfo.h IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
MachineModuleInfoImpls.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineOperand.h Add ChangeTo* to MachineOperand for symbols 2015-05-06 17:05:54 +00:00
MachinePassRegistry.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachinePostDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineRegionInfo.h Remove empty non-virtual destructors or mark them =default when non-public 2015-04-11 15:32:26 +00:00
MachineRegisterInfo.h MachineRegisterInfo: Make it clear that hints are for vregs 2015-04-03 00:18:33 +00:00
MachineScheduler.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineSSAUpdater.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MachineTraceMetrics.h
MachineValueType.h Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
MachORelocation.h
Passes.h [ShrinkWrap] Add (a simplified version) of shrink-wrapping. 2015-05-05 17:38:16 +00:00
PBQPRAConstraint.h
PseudoSourceValue.h
RegAllocPBQP.h [PBQP] Do not add an edge between nodes with totally disjoint allowed registers 2015-03-01 20:39:34 +00:00
RegAllocRegistry.h
RegisterClassInfo.h
RegisterPressure.h Remove declarations for nonexistent methods 2015-04-01 21:16:02 +00:00
RegisterScavenging.h
ResourcePriorityQueue.h unique_ptrify ResourcePriorityQueue::ResourceModel 2015-03-03 20:49:08 +00:00
RuntimeLibcalls.h SDAG: Merge the meat of two ExpandAtomic implementations. 2015-03-05 20:04:29 +00:00
ScheduleDAG.h Remove the explicit SUnitIterator::operator= as the default is just fine 2015-03-03 21:17:00 +00:00
ScheduleDAGInstrs.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDFS.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h Revert r236546, "propagate IR-level fast-math-flags to DAG nodes (NFC)" 2015-05-06 14:03:12 +00:00
SelectionDAGISel.h Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
SelectionDAGNodes.h Disable r235989 "Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes"" 2015-05-07 18:33:50 +00:00
SlotIndexes.h Removing LLVM_EXPLICIT, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:00:20 +00:00
StackMaps.h Remove dead calls and function arguments dealing with TRI in StackMaps. 2015-03-20 21:05:18 +00:00
StackProtector.h
TargetLoweringObjectFileImpl.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
TargetSchedule.h
ValueTypes.h Make VTs and UnicodeCharSet ctors constexpr if the compiler supports it. 2015-03-01 18:10:07 +00:00
ValueTypes.td Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
VirtRegMap.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
WinEHFuncInfo.h [WinEHPrepare] Don't rely on the order of IR 2015-04-10 04:56:17 +00:00