diff options
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/AsmPrinter/CMakeLists.txt | 30 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/LLVMBuild.txt | 22 | ||||
-rw-r--r-- | lib/CodeGen/CMakeLists.txt | 178 | ||||
-rw-r--r-- | lib/CodeGen/GlobalISel/CMakeLists.txt | 26 | ||||
-rw-r--r-- | lib/CodeGen/GlobalISel/LLVMBuild.txt | 22 | ||||
-rw-r--r-- | lib/CodeGen/LLVMBuild.txt | 25 | ||||
-rw-r--r-- | lib/CodeGen/MIRParser/CMakeLists.txt | 8 | ||||
-rw-r--r-- | lib/CodeGen/MIRParser/LLVMBuild.txt | 22 | ||||
-rw-r--r-- | lib/CodeGen/README.txt | 199 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/CMakeLists.txt | 30 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/LLVMBuild.txt | 22 |
11 files changed, 0 insertions, 584 deletions
diff --git a/lib/CodeGen/AsmPrinter/CMakeLists.txt b/lib/CodeGen/AsmPrinter/CMakeLists.txt deleted file mode 100644 index 3fb088ab6f0d..000000000000 --- a/lib/CodeGen/AsmPrinter/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -add_llvm_library(LLVMAsmPrinter - AccelTable.cpp - AddressPool.cpp - ARMException.cpp - AsmPrinter.cpp - AsmPrinterDwarf.cpp - AsmPrinterInlineAsm.cpp - DbgEntityHistoryCalculator.cpp - DebugHandlerBase.cpp - DebugLocStream.cpp - DIE.cpp - DIEHash.cpp - DwarfCFIException.cpp - DwarfCompileUnit.cpp - DwarfDebug.cpp - DwarfExpression.cpp - DwarfFile.cpp - DwarfStringPool.cpp - DwarfUnit.cpp - EHStreamer.cpp - ErlangGCPrinter.cpp - OcamlGCPrinter.cpp - WinCFGuard.cpp - WinException.cpp - CodeViewDebug.cpp - WasmException.cpp - - DEPENDS - intrinsics_gen - ) diff --git a/lib/CodeGen/AsmPrinter/LLVMBuild.txt b/lib/CodeGen/AsmPrinter/LLVMBuild.txt deleted file mode 100644 index bde8148d259b..000000000000 --- a/lib/CodeGen/AsmPrinter/LLVMBuild.txt +++ /dev/null @@ -1,22 +0,0 @@ -;===- ./lib/CodeGen/AsmPrinter/LLVMBuild.txt -------------------*- Conf -*--===; -; -; The LLVM Compiler Infrastructure -; -; This file is distributed under the University of Illinois Open Source -; License. See LICENSE.TXT for details. -; -;===------------------------------------------------------------------------===; -; -; This is an LLVMBuild description file for the components in this subdirectory. -; -; For more information on the LLVMBuild system, please see: -; -; http://llvm.org/docs/LLVMBuild.html -; -;===------------------------------------------------------------------------===; - -[component_0] -type = Library -name = AsmPrinter -parent = Libraries -required_libraries = Analysis BinaryFormat CodeGen Core DebugInfoCodeView DebugInfoMSF MC MCParser Support Target diff --git a/lib/CodeGen/CMakeLists.txt b/lib/CodeGen/CMakeLists.txt deleted file mode 100644 index e76f9f8ed4e7..000000000000 --- a/lib/CodeGen/CMakeLists.txt +++ /dev/null @@ -1,178 +0,0 @@ -add_llvm_library(LLVMCodeGen - AggressiveAntiDepBreaker.cpp - AllocationOrder.cpp - Analysis.cpp - AtomicExpandPass.cpp - BasicTargetTransformInfo.cpp - BranchFolding.cpp - BranchRelaxation.cpp - BreakFalseDeps.cpp - BuiltinGCs.cpp - CalcSpillWeights.cpp - CallingConvLower.cpp - CFIInstrInserter.cpp - CodeGen.cpp - CodeGenPrepare.cpp - CriticalAntiDepBreaker.cpp - DeadMachineInstructionElim.cpp - DetectDeadLanes.cpp - DFAPacketizer.cpp - DwarfEHPrepare.cpp - EarlyIfConversion.cpp - EdgeBundles.cpp - ExecutionDomainFix.cpp - ExpandISelPseudos.cpp - ExpandMemCmp.cpp - ExpandPostRAPseudos.cpp - ExpandReductions.cpp - FaultMaps.cpp - FEntryInserter.cpp - FuncletLayout.cpp - GCMetadata.cpp - GCMetadataPrinter.cpp - GCRootLowering.cpp - GCStrategy.cpp - GlobalMerge.cpp - IfConversion.cpp - ImplicitNullChecks.cpp - IndirectBrExpandPass.cpp - InlineSpiller.cpp - InterferenceCache.cpp - InterleavedAccessPass.cpp - InterleavedLoadCombinePass.cpp - IntrinsicLowering.cpp - LatencyPriorityQueue.cpp - LazyMachineBlockFrequencyInfo.cpp - LexicalScopes.cpp - LiveDebugValues.cpp - LiveDebugVariables.cpp - LiveIntervals.cpp - LiveInterval.cpp - LiveIntervalUnion.cpp - LivePhysRegs.cpp - LiveRangeCalc.cpp - LiveRangeEdit.cpp - LiveRangeShrink.cpp - LiveRegMatrix.cpp - LiveRegUnits.cpp - LiveStacks.cpp - LiveVariables.cpp - LLVMTargetMachine.cpp - LocalStackSlotAllocation.cpp - LoopTraversal.cpp - LowLevelType.cpp - LowerEmuTLS.cpp - MachineBasicBlock.cpp - MachineBlockFrequencyInfo.cpp - MachineBlockPlacement.cpp - MachineBranchProbabilityInfo.cpp - MachineCombiner.cpp - MachineCopyPropagation.cpp - MachineCSE.cpp - MachineDominanceFrontier.cpp - MachineDominators.cpp - MachineFrameInfo.cpp - MachineFunction.cpp - MachineFunctionPass.cpp - MachineFunctionPrinterPass.cpp - MachineInstrBundle.cpp - MachineInstr.cpp - MachineLICM.cpp - MachineLoopInfo.cpp - MachineModuleInfo.cpp - MachineModuleInfoImpls.cpp - MachineOperand.cpp - MachineOptimizationRemarkEmitter.cpp - MachineOutliner.cpp - MachinePipeliner.cpp - MachinePostDominators.cpp - MachineRegionInfo.cpp - MachineRegisterInfo.cpp - MachineScheduler.cpp - MachineSink.cpp - MachineSSAUpdater.cpp - MachineTraceMetrics.cpp - MachineVerifier.cpp - PatchableFunction.cpp - MIRPrinter.cpp - MIRPrintingPass.cpp - MacroFusion.cpp - OptimizePHIs.cpp - ParallelCG.cpp - PeepholeOptimizer.cpp - PHIElimination.cpp - PHIEliminationUtils.cpp - PostRAHazardRecognizer.cpp - PostRASchedulerList.cpp - PreISelIntrinsicLowering.cpp - ProcessImplicitDefs.cpp - PrologEpilogInserter.cpp - PseudoSourceValue.cpp - ReachingDefAnalysis.cpp - RegAllocBase.cpp - RegAllocBasic.cpp - RegAllocFast.cpp - RegAllocGreedy.cpp - RegAllocPBQP.cpp - RegisterClassInfo.cpp - RegisterCoalescer.cpp - RegisterPressure.cpp - RegisterScavenging.cpp - RenameIndependentSubregs.cpp - MIRCanonicalizerPass.cpp - RegisterUsageInfo.cpp - RegUsageInfoCollector.cpp - RegUsageInfoPropagate.cpp - ResetMachineFunctionPass.cpp - SafeStack.cpp - SafeStackColoring.cpp - SafeStackLayout.cpp - ScalarizeMaskedMemIntrin.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 - TargetPassConfig.cpp - TargetRegisterInfo.cpp - TargetSchedule.cpp - TargetSubtargetInfo.cpp - TwoAddressInstructionPass.cpp - UnreachableBlockElim.cpp - ValueTypes.cpp - VirtRegMap.cpp - WasmEHPrepare.cpp - WinEHPrepare.cpp - XRayInstrumentation.cpp - - ADDITIONAL_HEADER_DIRS - ${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen - ${LLVM_MAIN_INCLUDE_DIR}/llvm/CodeGen/PBQP - - LINK_LIBS ${LLVM_PTHREAD_LIB} - - DEPENDS - intrinsics_gen - ) - -add_subdirectory(SelectionDAG) -add_subdirectory(AsmPrinter) -add_subdirectory(MIRParser) -add_subdirectory(GlobalISel) diff --git a/lib/CodeGen/GlobalISel/CMakeLists.txt b/lib/CodeGen/GlobalISel/CMakeLists.txt deleted file mode 100644 index da2fd3b239a2..000000000000 --- a/lib/CodeGen/GlobalISel/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -add_llvm_library(LLVMGlobalISel - CSEInfo.cpp - CSEMIRBuilder.cpp - CallLowering.cpp - GlobalISel.cpp - Combiner.cpp - CombinerHelper.cpp - GISelChangeObserver.cpp - IRTranslator.cpp - InstructionSelect.cpp - InstructionSelector.cpp - LegalityPredicates.cpp - LegalizeMutations.cpp - Legalizer.cpp - LegalizerHelper.cpp - LegalizerInfo.cpp - Localizer.cpp - MachineIRBuilder.cpp - RegBankSelect.cpp - RegisterBank.cpp - RegisterBankInfo.cpp - Utils.cpp - - DEPENDS - intrinsics_gen - ) diff --git a/lib/CodeGen/GlobalISel/LLVMBuild.txt b/lib/CodeGen/GlobalISel/LLVMBuild.txt deleted file mode 100644 index a2daa3b222a6..000000000000 --- a/lib/CodeGen/GlobalISel/LLVMBuild.txt +++ /dev/null @@ -1,22 +0,0 @@ -;===- ./lib/CodeGen/GlobalISel/LLVMBuild.txt -----------------*- Conf -*--===; -; -; The LLVM Compiler Infrastructure -; -; This file is distributed under the University of Illinois Open Source -; License. See LICENSE.TXT for details. -; -;===------------------------------------------------------------------------===; -; -; This is an LLVMBuild description file for the components in this subdirectory. -; -; For more information on the LLVMBuild system, please see: -; -; http://llvm.org/docs/LLVMBuild.html -; -;===------------------------------------------------------------------------===; - -[component_0] -type = Library -name = GlobalISel -parent = CodeGen -required_libraries = Analysis CodeGen Core MC Support Target TransformUtils diff --git a/lib/CodeGen/LLVMBuild.txt b/lib/CodeGen/LLVMBuild.txt deleted file mode 100644 index 07ea9dcaea7a..000000000000 --- a/lib/CodeGen/LLVMBuild.txt +++ /dev/null @@ -1,25 +0,0 @@ -;===- ./lib/CodeGen/LLVMBuild.txt ------------------------------*- Conf -*--===; -; -; The LLVM Compiler Infrastructure -; -; This file is distributed under the University of Illinois Open Source -; License. See LICENSE.TXT for details. -; -;===------------------------------------------------------------------------===; -; -; This is an LLVMBuild description file for the components in this subdirectory. -; -; For more information on the LLVMBuild system, please see: -; -; http://llvm.org/docs/LLVMBuild.html -; -;===------------------------------------------------------------------------===; - -[common] -subdirectories = AsmPrinter SelectionDAG MIRParser GlobalISel - -[component_0] -type = Library -name = CodeGen -parent = Libraries -required_libraries = Analysis BitReader BitWriter Core MC ProfileData Scalar Support Target TransformUtils diff --git a/lib/CodeGen/MIRParser/CMakeLists.txt b/lib/CodeGen/MIRParser/CMakeLists.txt deleted file mode 100644 index 2eb5b844d0e1..000000000000 --- a/lib/CodeGen/MIRParser/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_llvm_library(LLVMMIRParser - MILexer.cpp - MIParser.cpp - MIRParser.cpp - - DEPENDS - intrinsics_gen - ) diff --git a/lib/CodeGen/MIRParser/LLVMBuild.txt b/lib/CodeGen/MIRParser/LLVMBuild.txt deleted file mode 100644 index 6269b005a985..000000000000 --- a/lib/CodeGen/MIRParser/LLVMBuild.txt +++ /dev/null @@ -1,22 +0,0 @@ -;===- ./lib/CodeGen/MIRParser/LLVMBuild.txt --------------------*- Conf -*--===; -; -; The LLVM Compiler Infrastructure -; -; This file is distributed under the University of Illinois Open Source -; License. See LICENSE.TXT for details. -; -;===------------------------------------------------------------------------===; -; -; This is an LLVMBuild description file for the components in this subdirectory. -; -; For more information on the LLVMBuild system, please see: -; -; http://llvm.org/docs/LLVMBuild.html -; -;===------------------------------------------------------------------------===; - -[component_0] -type = Library -name = MIRParser -parent = CodeGen -required_libraries = AsmParser BinaryFormat CodeGen Core MC Support Target diff --git a/lib/CodeGen/README.txt b/lib/CodeGen/README.txt deleted file mode 100644 index d8958715c6b4..000000000000 --- a/lib/CodeGen/README.txt +++ /dev/null @@ -1,199 +0,0 @@ -//===---------------------------------------------------------------------===// - -Common register allocation / spilling problem: - - mul lr, r4, lr - str lr, [sp, #+52] - ldr lr, [r1, #+32] - sxth r3, r3 - ldr r4, [sp, #+52] - mla r4, r3, lr, r4 - -can be: - - mul lr, r4, lr - mov r4, lr - str lr, [sp, #+52] - ldr lr, [r1, #+32] - sxth r3, r3 - mla r4, r3, lr, r4 - -and then "merge" mul and mov: - - mul r4, r4, lr - str r4, [sp, #+52] - ldr lr, [r1, #+32] - sxth r3, r3 - mla r4, r3, lr, r4 - -It also increase the likelihood the store may become dead. - -//===---------------------------------------------------------------------===// - -bb27 ... - ... - %reg1037 = ADDri %reg1039, 1 - %reg1038 = ADDrs %reg1032, %reg1039, %noreg, 10 - Successors according to CFG: 0x8b03bf0 (#5) - -bb76 (0x8b03bf0, LLVM BB @0x8b032d0, ID#5): - Predecessors according to CFG: 0x8b0c5f0 (#3) 0x8b0a7c0 (#4) - %reg1039 = PHI %reg1070, mbb<bb76.outer,0x8b0c5f0>, %reg1037, mbb<bb27,0x8b0a7c0> - -Note ADDri is not a two-address instruction. However, its result %reg1037 is an -operand of the PHI node in bb76 and its operand %reg1039 is the result of the -PHI node. We should treat it as a two-address code and make sure the ADDri is -scheduled after any node that reads %reg1039. - -//===---------------------------------------------------------------------===// - -Use local info (i.e. register scavenger) to assign it a free register to allow -reuse: - ldr r3, [sp, #+4] - add r3, r3, #3 - ldr r2, [sp, #+8] - add r2, r2, #2 - ldr r1, [sp, #+4] <== - add r1, r1, #1 - ldr r0, [sp, #+4] - add r0, r0, #2 - -//===---------------------------------------------------------------------===// - -LLVM aggressively lift CSE out of loop. Sometimes this can be negative side- -effects: - -R1 = X + 4 -R2 = X + 7 -R3 = X + 15 - -loop: -load [i + R1] -... -load [i + R2] -... -load [i + R3] - -Suppose there is high register pressure, R1, R2, R3, can be spilled. We need -to implement proper re-materialization to handle this: - -R1 = X + 4 -R2 = X + 7 -R3 = X + 15 - -loop: -R1 = X + 4 @ re-materialized -load [i + R1] -... -R2 = X + 7 @ re-materialized -load [i + R2] -... -R3 = X + 15 @ re-materialized -load [i + R3] - -Furthermore, with re-association, we can enable sharing: - -R1 = X + 4 -R2 = X + 7 -R3 = X + 15 - -loop: -T = i + X -load [T + 4] -... -load [T + 7] -... -load [T + 15] -//===---------------------------------------------------------------------===// - -It's not always a good idea to choose rematerialization over spilling. If all -the load / store instructions would be folded then spilling is cheaper because -it won't require new live intervals / registers. See 2003-05-31-LongShifts for -an example. - -//===---------------------------------------------------------------------===// - -With a copying garbage collector, derived pointers must not be retained across -collector safe points; the collector could move the objects and invalidate the -derived pointer. This is bad enough in the first place, but safe points can -crop up unpredictably. Consider: - - %array = load { i32, [0 x %obj] }** %array_addr - %nth_el = getelementptr { i32, [0 x %obj] }* %array, i32 0, i32 %n - %old = load %obj** %nth_el - %z = div i64 %x, %y - store %obj* %new, %obj** %nth_el - -If the i64 division is lowered to a libcall, then a safe point will (must) -appear for the call site. If a collection occurs, %array and %nth_el no longer -point into the correct object. - -The fix for this is to copy address calculations so that dependent pointers -are never live across safe point boundaries. But the loads cannot be copied -like this if there was an intervening store, so may be hard to get right. - -Only a concurrent mutator can trigger a collection at the libcall safe point. -So single-threaded programs do not have this requirement, even with a copying -collector. Still, LLVM optimizations would probably undo a front-end's careful -work. - -//===---------------------------------------------------------------------===// - -The ocaml frametable structure supports liveness information. It would be good -to support it. - -//===---------------------------------------------------------------------===// - -The FIXME in ComputeCommonTailLength in BranchFolding.cpp needs to be -revisited. The check is there to work around a misuse of directives in inline -assembly. - -//===---------------------------------------------------------------------===// - -It would be good to detect collector/target compatibility instead of silently -doing the wrong thing. - -//===---------------------------------------------------------------------===// - -It would be really nice to be able to write patterns in .td files for copies, -which would eliminate a bunch of explicit predicates on them (e.g. no side -effects). Once this is in place, it would be even better to have tblgen -synthesize the various copy insertion/inspection methods in TargetInstrInfo. - -//===---------------------------------------------------------------------===// - -Stack coloring improvements: - -1. Do proper LiveStacks analysis on all stack objects including those which are - not spill slots. -2. Reorder objects to fill in gaps between objects. - e.g. 4, 1, <gap>, 4, 1, 1, 1, <gap>, 4 => 4, 1, 1, 1, 1, 4, 4 - -//===---------------------------------------------------------------------===// - -The scheduler should be able to sort nearby instructions by their address. For -example, in an expanded memset sequence it's not uncommon to see code like this: - - movl $0, 4(%rdi) - movl $0, 8(%rdi) - movl $0, 12(%rdi) - movl $0, 0(%rdi) - -Each of the stores is independent, and the scheduler is currently making an -arbitrary decision about the order. - -//===---------------------------------------------------------------------===// - -Another opportunitiy in this code is that the $0 could be moved to a register: - - movl $0, 4(%rdi) - movl $0, 8(%rdi) - movl $0, 12(%rdi) - movl $0, 0(%rdi) - -This would save substantial code size, especially for longer sequences like -this. It would be easy to have a rule telling isel to avoid matching MOV32mi -if the immediate has more than some fixed number of uses. It's more involved -to teach the register allocator how to do late folding to recover from -excessive register pressure. - diff --git a/lib/CodeGen/SelectionDAG/CMakeLists.txt b/lib/CodeGen/SelectionDAG/CMakeLists.txt deleted file mode 100644 index fd1e5e2cfc56..000000000000 --- a/lib/CodeGen/SelectionDAG/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -add_llvm_library(LLVMSelectionDAG - DAGCombiner.cpp - FastISel.cpp - FunctionLoweringInfo.cpp - InstrEmitter.cpp - LegalizeDAG.cpp - LegalizeFloatTypes.cpp - LegalizeIntegerTypes.cpp - LegalizeTypes.cpp - LegalizeTypesGeneric.cpp - LegalizeVectorOps.cpp - LegalizeVectorTypes.cpp - ResourcePriorityQueue.cpp - ScheduleDAGFast.cpp - ScheduleDAGRRList.cpp - ScheduleDAGSDNodes.cpp - ScheduleDAGVLIW.cpp - SelectionDAGBuilder.cpp - SelectionDAG.cpp - SelectionDAGAddressAnalysis.cpp - SelectionDAGDumper.cpp - SelectionDAGISel.cpp - SelectionDAGPrinter.cpp - SelectionDAGTargetInfo.cpp - StatepointLowering.cpp - TargetLowering.cpp - - DEPENDS - intrinsics_gen - ) diff --git a/lib/CodeGen/SelectionDAG/LLVMBuild.txt b/lib/CodeGen/SelectionDAG/LLVMBuild.txt deleted file mode 100644 index 81d2e000a2e8..000000000000 --- a/lib/CodeGen/SelectionDAG/LLVMBuild.txt +++ /dev/null @@ -1,22 +0,0 @@ -;===- ./lib/CodeGen/SelectionDAG/LLVMBuild.txt -----------------*- Conf -*--===; -; -; The LLVM Compiler Infrastructure -; -; This file is distributed under the University of Illinois Open Source -; License. See LICENSE.TXT for details. -; -;===------------------------------------------------------------------------===; -; -; This is an LLVMBuild description file for the components in this subdirectory. -; -; For more information on the LLVMBuild system, please see: -; -; http://llvm.org/docs/LLVMBuild.html -; -;===------------------------------------------------------------------------===; - -[component_0] -type = Library -name = SelectionDAG -parent = CodeGen -required_libraries = Analysis CodeGen Core MC Support Target TransformUtils |