mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-10 14:36:01 +00:00
![Matthias Braun](/assets/img/avatar_default.png)
The DetectDeadLanes pass performs a dataflow analysis of used/defined subregister lanes across COPY instructions and instructions that will get lowered to copies. It detects dead definitions and uses reading undefined values which are obscured by COPY and subregister usage. These dead definitions cause trouble in the register coalescer which cannot deal with definitions suddenly becoming dead after coalescing COPY instructions. For now the pass only adds dead and undef flags to machine operands. It should be possible to extend it in the future to remove the dead instructions and redo the analysis for the affected virtual registers. Differential Revision: http://reviews.llvm.org/D18427 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267851 91177308-0d34-0410-b5e6-96231b3b80d8
147 lines
3.3 KiB
CMake
147 lines
3.3 KiB
CMake
add_llvm_library(LLVMCodeGen
|
|
AggressiveAntiDepBreaker.cpp
|
|
AllocationOrder.cpp
|
|
Analysis.cpp
|
|
AtomicExpandPass.cpp
|
|
BasicTargetTransformInfo.cpp
|
|
BranchFolding.cpp
|
|
BuiltinGCs.cpp
|
|
CalcSpillWeights.cpp
|
|
CallingConvLower.cpp
|
|
CodeGen.cpp
|
|
CodeGenPrepare.cpp
|
|
CriticalAntiDepBreaker.cpp
|
|
DeadMachineInstructionElim.cpp
|
|
DetectDeadLanes.cpp
|
|
DFAPacketizer.cpp
|
|
DwarfEHPrepare.cpp
|
|
EarlyIfConversion.cpp
|
|
EdgeBundles.cpp
|
|
ExecutionDepsFix.cpp
|
|
ExpandISelPseudos.cpp
|
|
ExpandPostRAPseudos.cpp
|
|
FaultMaps.cpp
|
|
FuncletLayout.cpp
|
|
GCMetadata.cpp
|
|
GCMetadataPrinter.cpp
|
|
GCRootLowering.cpp
|
|
GCStrategy.cpp
|
|
GlobalMerge.cpp
|
|
IfConversion.cpp
|
|
ImplicitNullChecks.cpp
|
|
InlineSpiller.cpp
|
|
InterferenceCache.cpp
|
|
InterleavedAccessPass.cpp
|
|
IntrinsicLowering.cpp
|
|
LatencyPriorityQueue.cpp
|
|
LexicalScopes.cpp
|
|
LiveDebugValues.cpp
|
|
LiveDebugVariables.cpp
|
|
LiveIntervalAnalysis.cpp
|
|
LiveInterval.cpp
|
|
LiveIntervalUnion.cpp
|
|
LivePhysRegs.cpp
|
|
LiveRangeCalc.cpp
|
|
LiveRangeEdit.cpp
|
|
LiveRegMatrix.cpp
|
|
LiveStackAnalysis.cpp
|
|
LiveVariables.cpp
|
|
LLVMTargetMachine.cpp
|
|
LocalStackSlotAllocation.cpp
|
|
LowerEmuTLS.cpp
|
|
MachineBasicBlock.cpp
|
|
MachineBlockFrequencyInfo.cpp
|
|
MachineBlockPlacement.cpp
|
|
MachineBranchProbabilityInfo.cpp
|
|
MachineCombiner.cpp
|
|
MachineCopyPropagation.cpp
|
|
MachineCSE.cpp
|
|
MachineDominanceFrontier.cpp
|
|
MachineDominators.cpp
|
|
MachineFunctionAnalysis.cpp
|
|
MachineFunction.cpp
|
|
MachineFunctionPass.cpp
|
|
MachineFunctionPrinterPass.cpp
|
|
MachineInstrBundle.cpp
|
|
MachineInstr.cpp
|
|
MachineLICM.cpp
|
|
MachineLoopInfo.cpp
|
|
MachineModuleInfo.cpp
|
|
MachineModuleInfoImpls.cpp
|
|
MachinePassRegistry.cpp
|
|
MachinePostDominators.cpp
|
|
MachineRegionInfo.cpp
|
|
MachineRegisterInfo.cpp
|
|
MachineScheduler.cpp
|
|
MachineSink.cpp
|
|
MachineSSAUpdater.cpp
|
|
MachineTraceMetrics.cpp
|
|
MachineVerifier.cpp
|
|
PatchableFunction.cpp
|
|
MIRPrinter.cpp
|
|
MIRPrintingPass.cpp
|
|
OptimizePHIs.cpp
|
|
ParallelCG.cpp
|
|
Passes.cpp
|
|
PeepholeOptimizer.cpp
|
|
PHIElimination.cpp
|
|
PHIEliminationUtils.cpp
|
|
PostRAHazardRecognizer.cpp
|
|
PostRASchedulerList.cpp
|
|
PreISelIntrinsicLowering.cpp
|
|
ProcessImplicitDefs.cpp
|
|
PrologEpilogInserter.cpp
|
|
PseudoSourceValue.cpp
|
|
RegAllocBase.cpp
|
|
RegAllocBasic.cpp
|
|
RegAllocFast.cpp
|
|
RegAllocGreedy.cpp
|
|
RegAllocPBQP.cpp
|
|
RegisterClassInfo.cpp
|
|
RegisterCoalescer.cpp
|
|
RegisterPressure.cpp
|
|
RegisterScavenging.cpp
|
|
SafeStack.cpp
|
|
ScheduleDAG.cpp
|
|
ScheduleDAGInstrs.cpp
|
|
ScheduleDAGPrinter.cpp
|
|
ScoreboardHazardRecognizer.cpp
|
|
ShadowStackGCLowering.cpp
|
|
ShrinkWrap.cpp
|
|
SjLjEHPrepare.cpp
|
|
SlotIndexes.cpp
|
|
SpillPlacement.cpp
|
|
SplitKit.cpp
|
|
StackColoring.cpp
|
|
StackMapLivenessAnalysis.cpp
|
|
StackMaps.cpp
|
|
StackProtector.cpp
|
|
StackSlotColoring.cpp
|
|
TailDuplication.cpp
|
|
TailDuplicator.cpp
|
|
TargetFrameLoweringImpl.cpp
|
|
TargetInstrInfo.cpp
|
|
TargetLoweringBase.cpp
|
|
TargetLoweringObjectFileImpl.cpp
|
|
TargetOptionsImpl.cpp
|
|
TargetRegisterInfo.cpp
|
|
TargetSchedule.cpp
|
|
TwoAddressInstructionPass.cpp
|
|
UnreachableBlockElim.cpp
|
|
VirtRegMap.cpp
|
|
WinEHPrepare.cpp
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen
|
|
${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen/PBQP
|
|
|
|
LINK_LIBS ${PTHREAD_LIB}
|
|
)
|
|
|
|
add_dependencies(LLVMCodeGen intrinsics_gen)
|
|
|
|
add_subdirectory(SelectionDAG)
|
|
add_subdirectory(AsmPrinter)
|
|
add_subdirectory(MIRParser)
|
|
add_subdirectory(GlobalISel)
|