llvm-6502/include/llvm/CodeGen
Richard Sandiford 66589dcc8f Keep TBAA info when rewriting SelectionDAG loads and stores
Most SelectionDAG code drops the TBAA info when creating a new form of a
load and store (e.g. during legalization, or when converting a plain
load to an extending one).  This patch tries to catch all cases where
the TBAA information can legitimately be carried over.

The patch adds alternative forms of getLoad() and getExtLoad() that take
a MachineMemOperand instead of individual fields.  (The corresponding
getTruncStore() already exists.)  The idea is to use the MachineMemOperand
forms when all fields are carried over (size, pointer info, isVolatile,
isNonTemporal, alignment and TBAA info).  If some adjustment is being
made, e.g. to narrow the load, then we still pass the individual fields
but also pass the TBAA info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193517 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-28 11:17:59 +00:00
..
PBQP Fix PBQP graph iterator typedefs. 2013-05-16 02:20:41 +00:00
Analysis.h [stackprotector] Refactor out the end of isInTailCallPosition into the function returnTypeIsEligibleForTailCall. 2013-08-20 08:36:50 +00:00
AsmPrinter.h Formatting and whitespace. 2013-10-24 21:04:51 +00:00
CalcSpillWeights.h Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo. 2013-06-17 19:00:36 +00:00
CallingConvLower.h Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
CommandFlags.h Speling fixes. 2013-10-22 15:18:03 +00:00
DAGCombine.h Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum. 2012-12-27 06:47:41 +00:00
DFAPacketizer.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
EdgeBundles.h
FastISel.h Changed "mode: c++" => "C++" at the suggestion of Nick Lewycky. 2013-07-10 18:40:49 +00:00
FunctionLoweringInfo.h Simplify landing pad lowering. 2013-07-04 04:53:45 +00:00
GCMetadata.h GCInfoDeleter code cleanup after r175528 2013-03-01 11:40:32 +00:00
GCMetadataPrinter.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:59:23 +00:00
GCs.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
GCStrategy.h
IntrinsicLowering.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ISDOpcodes.h [ARM] Use the load-acquire/store-release instructions optimally in AArch32. 2013-09-26 12:22:36 +00:00
JITCodeEmitter.h Simplify code. 2013-02-09 13:29:31 +00:00
LatencyPriorityQueue.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
LexicalScopes.h Return SmallVectorImpl& instead of SmallVector& in a couple places to avoid having to specify the vector size in multiple places. 2013-07-03 04:30:58 +00:00
LinkAllAsmWriterComponents.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
LinkAllCodegenComponents.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
LiveInterval.h Print register in LiveInterval::print() 2013-10-10 21:29:05 +00:00
LiveIntervalAnalysis.h Represent RegUnit liveness with LiveRange instance 2013-10-10 21:29:02 +00:00
LiveIntervalUnion.h Rename LiveRange to LiveInterval::Segment 2013-10-10 21:28:43 +00:00
LiveRangeEdit.h Auto-compute live intervals on demand. 2013-08-14 23:50:16 +00:00
LiveRegMatrix.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
LiveRegUnits.h LiveRegUnits: Use *MBB for consistency and convenience. 2013-10-14 22:18:59 +00:00
LiveStackAnalysis.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
LiveVariables.h Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-11 16:22:38 +00:00
MachineBasicBlock.h Even more spelling fixes for "instruction". 2013-09-28 13:42:22 +00:00
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h Add editor C++ filetype declaration no functionality change. 2013-08-12 21:10:23 +00:00
MachineCodeEmitter.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MachineCodeInfo.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MachineConstantPool.h Directly access objects which may change during compilation. 2013-06-17 20:41:25 +00:00
MachineDominators.h Add even more constatness in MachineDominators.h. 2013-02-16 12:36:32 +00:00
MachineFrameInfo.h Directly access objects which may change during compilation. 2013-06-17 20:41:25 +00:00
MachineFunction.h Fix comment that didn't match the method it was above 2013-04-22 20:30:50 +00:00
MachineFunctionAnalysis.h Remove unneeded "TargetMachine.h" #includes. 2013-02-09 20:54:05 +00:00
MachineFunctionPass.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MachineInstr.h Rename parameter: defined regs are not incoming. 2013-10-10 21:28:38 +00:00
MachineInstrBuilder.h Reapply an improved version of r180816/180817. 2013-07-09 20:28:37 +00:00
MachineInstrBundle.h Add a getBundleEnd() function to go with the existing getBundleStart(). 2013-01-09 01:02:19 +00:00
MachineJumpTableInfo.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MachineLoopInfo.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MachineMemOperand.h Add target flags to MachineMemOperands. 2013-04-27 03:54:17 +00:00
MachineModuleInfo.h Make a few more things const. 2013-08-15 20:25:44 +00:00
MachineModuleInfoImpls.h Rename virtual table anchors from Anchor() to anchor() for consistency with the rest of the tree. 2012-09-26 06:36:36 +00:00
MachineOperand.h MachineOperand::setIsDebug should ensure the register is /not/ a definition 2013-06-16 20:34:09 +00:00
MachinePassRegistry.h
MachinePostDominators.h Remove unneeded #include. 2013-03-10 01:15:14 +00:00
MachineRegisterInfo.h Add a convenient PSetIterator for visiting pressure sets affected by a register. 2013-08-23 17:48:46 +00:00
MachineRelocation.h [typo] An LLVM. 2013-08-16 23:30:19 +00:00
MachineScheduler.h Allow subtarget selection of the default MachineScheduler and document the interface. 2013-09-20 05:14:41 +00:00
MachineSSAUpdater.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:59:23 +00:00
MachineTraceMetrics.h Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
MachORelocation.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
Passes.h Simplify formatting and sort these. No functionality changed. 2013-10-15 02:03:44 +00:00
PseudoSourceValue.h [typo] An LLVM. 2013-08-16 23:30:19 +00:00
RegAllocPBQP.h Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo. 2013-06-17 19:00:36 +00:00
RegAllocRegistry.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
RegisterClassInfo.h MI-Sched: Adjust regpressure limits for reserved regs. 2013-06-21 18:32:58 +00:00
RegisterPressure.h Represent RegUnit liveness with LiveRange instance 2013-10-10 21:29:02 +00:00
RegisterScavenging.h Use SmallVectorImpl::iterator/const_iterator instead of SmallVector 2013-07-03 05:01:24 +00:00
ResourcePriorityQueue.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
RuntimeLibcalls.h LegalizeDAG: allow libcalls for max/min atomic operations 2013-10-25 09:30:20 +00:00
ScheduleDAG.h Explicitly request unsigned enum types when desired 2013-10-08 20:15:11 +00:00
ScheduleDAGInstrs.h Even more spelling fixes for "instruction". 2013-09-28 13:42:22 +00:00
ScheduleDFS.h SchedDFS: Complete support for nested subtrees. 2013-01-25 06:52:27 +00:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
ScoreboardHazardRecognizer.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
SelectionDAG.h Keep TBAA info when rewriting SelectionDAG loads and stores 2013-10-28 11:17:59 +00:00
SelectionDAGISel.h Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. 2013-10-05 05:38:16 +00:00
SelectionDAGNodes.h Remove an old workaround for a compiler that EOL'd years ago. 2013-09-29 19:39:02 +00:00
SlotIndexes.h Down-scale slot index distance to save bits. 2013-07-30 19:59:19 +00:00
StackProtector.h [stackprotector] Refactor the StackProtector pass from a single .cpp file into StackProtector.h and StackProtector.cpp. 2013-09-27 21:58:43 +00:00
TargetLoweringObjectFileImpl.h PR16493: DebugInfo with TLS on PPC crashing due to invalid relocation 2013-07-01 21:45:25 +00:00
TargetSchedule.h IfConverter: Use TargetSchedule for instruction latencies 2013-09-30 15:28:56 +00:00
ValueTypes.h Implement AArch64 vector load/store multiple N-element structure class SIMD(lselem). 2013-10-10 17:00:52 +00:00
ValueTypes.td Implement aarch64 neon instruction set AdvSIMD (Across). 2013-10-05 08:22:10 +00:00
VirtRegMap.h Remove VirtRegMap::getRegAllocPref(). 2012-12-04 00:35:59 +00:00