[llvm] r246236 - CodeGen: Introduce splitCodeGen and teach LTOCodeGenerator to use it.

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 29 02:06:49 PDT 2015


On 08/28/2015 01:37 AM, Peter Collingbourne via llvm-commits wrote:
> Author: pcc
> Date: Thu Aug 27 18:37:36 2015
> New Revision: 246236
>
> URL: http://llvm.org/viewvc/llvm-project?rev=246236&view=rev
> Log:
> CodeGen: Introduce splitCodeGen and teach LTOCodeGenerator to use it.
>
> llvm::splitCodeGen is a function that implements the core of parallel LTO
> code generation. It uses llvm::SplitModule to split the module into linkable
> partitions and spawning one code generation thread per partition. The function
> produces multiple object files which can be linked in the usual way.
>
> This has been threaded through to LTOCodeGenerator (and llvm-lto for testing
> purposes). Separate patches will add parallel LTO support to the gold plugin
> and lld.

Hi Peter,

I currently see build errors such as the following with cmake + BUILD_SHARED_LIBS=ON.
I did not investigate this yet, so I am not yet 100% certain this patch is the cause.

[65/764] Linking CXX shared library lib/libLLVMCodeGen.so.3.8.0svn
FAILED: : && /usr/bin/ccache  /usr/bin/clang++-3.6 -Qunused-arguments
-fcolor-diagnostics -fPIC  -fPIC -fvisibility-inlines-hidden -Wall -W
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wmissing-field-initializers -pedantic -Wno-long-long
-Wcovered-switch-default -Wnon-virtual-dtor -std=c++11
-fcolor-diagnostics -g -O0 -fno-inline	-Wl,-z,defs -shared
-Wl,-soname,libLLVMCodeGen.so.3.8 -o lib/libLLVMCodeGen.so.3.8.0svn
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AggressiveAntiDepBreaker.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AllocationOrder.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/Analysis.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AtomicExpandPass.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicTargetTransformInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BranchFolding.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CalcSpillWeights.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CallingConvLower.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CodeGen.cpp.o
lib/CodeGen/CMakeFi
les/LLVMCodeGen.dir/CodeGenPrepare.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CoreCLRGC.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/CriticalAntiDepBreaker.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/DFAPacketizer.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/DeadMachineInstructionElim.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/DwarfEHPrepare.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/EarlyIfConversion.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/EdgeBundles.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ErlangGC.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ExecutionDepsFix.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ExpandISelPseudos.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ExpandPostRAPseudos.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/FaultMaps.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/GCMetadata.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/GCMetadataPrinter.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/GCRootLowering.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/GCStrat
egy.cpp.o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/GlobalMerge.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/IfConversion.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ImplicitNullChecks.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/InlineSpiller.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/InterferenceCache.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/InterleavedAccessPass.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/IntrinsicLowering.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LLVMTargetMachine.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LatencyPriorityQueue.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LexicalScopes.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveDebugVariables.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveInterval.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveIntervalAnalysis.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveIntervalUnion.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveRangeCalc.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveRangeEdit.cpp.o l
ib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveRegMatrix.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LivePhysRegs.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveStackAnalysis.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LiveVariables.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/LocalStackSlotAllocation.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineBasicBlock.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineBlockFrequencyInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineBlockPlacement.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineBranchProbabilityInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineCSE.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineCombiner.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineCopyPropagation.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineDominators.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineDominanceFrontier.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunction.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.di
r/MachineFunctionAnalysis.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunctionPass.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineFunctionPrinterPass.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineInstr.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineInstrBundle.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineLICM.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineLoopInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineModuleInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineModuleInfoImpls.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachinePassRegistry.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachinePostDominators.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineRegisterInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineRegionInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineSSAUpdater.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineScheduler.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineSink.cpp.o
lib/CodeGen/CMake
Files/LLVMCodeGen.dir/MachineTraceMetrics.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MachineVerifier.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MIRPrinter.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MIRPrintingPass.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/OcamlGC.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/OptimizePHIs.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PHIElimination.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PHIEliminationUtils.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ParallelCG.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/Passes.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PeepholeOptimizer.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PostRASchedulerList.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ProcessImplicitDefs.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PrologEpilogInserter.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PseudoSourceValue.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocBase.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocBa
sic.cpp.o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocFast.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocGreedy.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocPBQP.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegisterClassInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegisterCoalescer.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegisterPressure.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegisterScavenging.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScheduleDAG.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScheduleDAGInstrs.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScheduleDAGPrinter.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScoreboardHazardRecognizer.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ShrinkWrap.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ShadowStackGC.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ShadowStackGCLowering.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SjLjEHPrepare.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SlotIndexes.cpp.o lib/Cod
eGen/CMakeFiles/LLVMCodeGen.dir/SpillPlacement.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SplitKit.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackColoring.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackProtector.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackSlotColoring.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMapLivenessAnalysis.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMaps.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StatepointExampleGC.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TailDuplication.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetFrameLoweringImpl.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetInstrInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetLoweringBase.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetLoweringObjectFileImpl.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetOptionsImpl.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetRegisterInfo.cpp.o
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetSchedule.cpp.o lib/
CodeGen/CMakeFiles/LLVMCodeGen.dir/TwoAddressInstructionPass.cpp.o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/UnreachableBlockElim.cpp.o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/VirtRegMap.cpp.o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/WinEHPrepare.cpp.o  lib/libLLVMAnalysis.so.3.8.0svn lib/libLLVMBitReader.so.3.8.0svn lib/libLLVMBitWriter.so.3.8.0svn lib/libLLVMCore.so.3.8.0svn lib/libLLVMInstrumentation.so.3.8.0svn lib/libLLVMMC.so.3.8.0svn lib/libLLVMScalarOpts.so.3.8.0svn lib/libLLVMSupport.so.3.8.0svn lib/libLLVMTarget.so.3.8.0svn lib/libLLVMTransformUtils.so.3.8.0svn -Wl,-rpath,"\$ORIGIN/../lib" && :
lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ParallelCG.cpp.o: In function `thread<(lambda at /home/grosser/Projects/polly/git/lib/CodeGen/ParallelCG.cpp:72:9), llvm::SmallVector<char, 0> >':
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/thread:136: undefined reference to `pthread_create'
clang: error: linker command failed with exit code 1 (use -v to see invocation)



More information about the llvm-commits mailing list