[llvm-dev] building release_50 with gcc7.2.0 on MacOS: duplicate symbol llvm::DominatorTreeBase

don hinton via llvm-dev llvm-dev at lists.llvm.org
Sat Aug 26 13:32:04 PDT 2017


Great, thanks for verifying...

On Sat, Aug 26, 2017 at 1:28 PM Andrew Kelley <superjoe30 at gmail.com> wrote:

> LLVM built successfully with this patch. Thanks!
>
> On Sat, Aug 26, 2017 at 4:23 PM, don hinton <hintonda at gmail.com> wrote:
>
>> Could you try this patch?  It's already explicitly instantiated
>> in llvm/lib/IR/Dominators.cpp.
>>
>> diff --git a/lib/Analysis/PostDominators.cpp
>> b/lib/Analysis/PostDominators.cpp
>> index fc34e6388a5..2282401085d 100644
>> --- a/lib/Analysis/PostDominators.cpp
>> +++ b/lib/Analysis/PostDominators.cpp
>> @@ -21,8 +21,6 @@ using namespace llvm;
>>
>>  #define DEBUG_TYPE "postdomtree"
>>
>> -template class llvm::DominatorTreeBase<BasicBlock, true>; //
>> PostDomTreeBase
>> -
>>
>>  //===----------------------------------------------------------------------===//
>>  //  PostDominatorTree Implementation
>>
>>  //===----------------------------------------------------------------------===//
>>
>> On Sat, Aug 26, 2017 at 12:18 PM, Andrew Kelley via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> This is release_50 branch of git,
>>> sha1: f1d5723be3f9456a6b16cdf687847ac2918846de
>>> Using gcc 7.2.0 from homebrew.
>>>
>>> $ CC=/usr/local/opt/gcc/bin/x86_64-apple-darwin16.7.0-gcc-7
>>> CXX=/usr/local/opt/gcc/bin/x86_64-apple-darwin16.7.0-g++-7 cmake ..
>>> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/Users/andy/local/llvm5
>>> -DCMAKE_PREFIX_PATH=/Users/andy/local/llvm5
>>> $ make VERBOSE=1
>>> [ 92%] Linking CXX executable ../../bin/bugpoint
>>> cd /Users/andy/Downloads/llvm-project/llvm/build/tools/bugpoint &&
>>> /usr/local/Cellar/cmake/3.7.2/bin/cmake -E cmake_link_script
>>> CMakeFiles/bugpoint.dir/link.txt --verbose=1
>>> /usr/local/opt/gcc/bin/x86_64-apple-darwin16.7.0-g++-7    -fPIC
>>> -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W
>>> -Wno-unused-parameter -Wwrite-strings -Wcast-qual
>>> -Wno-missing-field-initializers -pedantic -Wno-long-long
>>> -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -O3
>>> -DNDEBUG -Wl,-search_paths_first -Wl,-headerpad_max_install_names
>>>  -rdynamic CMakeFiles/bugpoint.dir/BugDriver.cpp.o
>>> CMakeFiles/bugpoint.dir/CrashDebugger.cpp.o
>>> CMakeFiles/bugpoint.dir/ExecutionDriver.cpp.o
>>> CMakeFiles/bugpoint.dir/ExtractFunction.cpp.o
>>> CMakeFiles/bugpoint.dir/FindBugs.cpp.o
>>> CMakeFiles/bugpoint.dir/Miscompilation.cpp.o
>>> CMakeFiles/bugpoint.dir/OptimizerDriver.cpp.o
>>> CMakeFiles/bugpoint.dir/ToolRunner.cpp.o
>>> CMakeFiles/bugpoint.dir/bugpoint.cpp.o  -o ../../bin/bugpoint
>>> -Wl,-rpath, at loader_path/../lib  ../../lib/libLLVMAArch64CodeGen.a
>>> ../../lib/libLLVMAArch64AsmPrinter.a ../../lib/libLLVMAArch64AsmParser.a
>>> ../../lib/libLLVMAArch64Desc.a ../../lib/libLLVMAArch64Info.a
>>> ../../lib/libLLVMAArch64Disassembler.a ../../lib/libLLVMAArch64Info.a
>>> ../../lib/libLLVMAArch64Utils.a ../../lib/libLLVMAMDGPUCodeGen.a
>>> ../../lib/libLLVMAMDGPUAsmPrinter.a ../../lib/libLLVMAMDGPUAsmParser.a
>>> ../../lib/libLLVMAMDGPUDesc.a ../../lib/libLLVMAMDGPUInfo.a
>>> ../../lib/libLLVMAMDGPUDisassembler.a ../../lib/libLLVMAMDGPUInfo.a
>>> ../../lib/libLLVMAMDGPUUtils.a ../../lib/libLLVMARMCodeGen.a
>>> ../../lib/libLLVMARMAsmPrinter.a ../../lib/libLLVMARMAsmParser.a
>>> ../../lib/libLLVMARMDesc.a ../../lib/libLLVMARMInfo.a
>>> ../../lib/libLLVMARMDisassembler.a ../../lib/libLLVMARMInfo.a
>>> ../../lib/libLLVMBPFCodeGen.a ../../lib/libLLVMBPFAsmPrinter.a
>>> ../../lib/libLLVMBPFDesc.a ../../lib/libLLVMBPFInfo.a
>>> ../../lib/libLLVMBPFDisassembler.a ../../lib/libLLVMBPFInfo.a
>>> ../../lib/libLLVMHexagonCodeGen.a ../../lib/libLLVMHexagonAsmParser.a
>>> ../../lib/libLLVMHexagonDesc.a ../../lib/libLLVMHexagonInfo.a
>>> ../../lib/libLLVMHexagonDisassembler.a ../../lib/libLLVMHexagonInfo.a
>>> ../../lib/libLLVMLanaiCodeGen.a ../../lib/libLLVMLanaiAsmPrinter.a
>>> ../../lib/libLLVMLanaiAsmParser.a ../../lib/libLLVMLanaiDesc.a
>>> ../../lib/libLLVMLanaiInfo.a ../../lib/libLLVMLanaiDisassembler.a
>>> ../../lib/libLLVMLanaiInfo.a ../../lib/libLLVMMipsCodeGen.a
>>> ../../lib/libLLVMMipsAsmPrinter.a ../../lib/libLLVMMipsAsmParser.a
>>> ../../lib/libLLVMMipsDesc.a ../../lib/libLLVMMipsInfo.a
>>> ../../lib/libLLVMMipsDisassembler.a ../../lib/libLLVMMipsInfo.a
>>> ../../lib/libLLVMMSP430CodeGen.a ../../lib/libLLVMMSP430AsmPrinter.a
>>> ../../lib/libLLVMMSP430Desc.a ../../lib/libLLVMMSP430Info.a
>>> ../../lib/libLLVMMSP430Info.a ../../lib/libLLVMNVPTXCodeGen.a
>>> ../../lib/libLLVMNVPTXAsmPrinter.a ../../lib/libLLVMNVPTXDesc.a
>>> ../../lib/libLLVMNVPTXInfo.a ../../lib/libLLVMNVPTXInfo.a
>>> ../../lib/libLLVMPowerPCCodeGen.a ../../lib/libLLVMPowerPCAsmPrinter.a
>>> ../../lib/libLLVMPowerPCAsmParser.a ../../lib/libLLVMPowerPCDesc.a
>>> ../../lib/libLLVMPowerPCInfo.a ../../lib/libLLVMPowerPCDisassembler.a
>>> ../../lib/libLLVMPowerPCInfo.a ../../lib/libLLVMSparcCodeGen.a
>>> ../../lib/libLLVMSparcAsmPrinter.a ../../lib/libLLVMSparcAsmParser.a
>>> ../../lib/libLLVMSparcDesc.a ../../lib/libLLVMSparcInfo.a
>>> ../../lib/libLLVMSparcDisassembler.a ../../lib/libLLVMSparcInfo.a
>>> ../../lib/libLLVMSystemZCodeGen.a ../../lib/libLLVMSystemZAsmPrinter.a
>>> ../../lib/libLLVMSystemZAsmParser.a ../../lib/libLLVMSystemZDesc.a
>>> ../../lib/libLLVMSystemZInfo.a ../../lib/libLLVMSystemZDisassembler.a
>>> ../../lib/libLLVMSystemZInfo.a ../../lib/libLLVMX86CodeGen.a
>>> ../../lib/libLLVMX86AsmPrinter.a ../../lib/libLLVMX86AsmParser.a
>>> ../../lib/libLLVMX86Desc.a ../../lib/libLLVMX86Info.a
>>> ../../lib/libLLVMX86Disassembler.a ../../lib/libLLVMX86Info.a
>>> ../../lib/libLLVMX86Utils.a ../../lib/libLLVMXCoreCodeGen.a
>>> ../../lib/libLLVMXCoreAsmPrinter.a ../../lib/libLLVMXCoreDesc.a
>>> ../../lib/libLLVMXCoreInfo.a ../../lib/libLLVMXCoreDisassembler.a
>>> ../../lib/libLLVMXCoreInfo.a ../../lib/libLLVMAnalysis.a
>>> ../../lib/libLLVMBitWriter.a ../../lib/libLLVMCodeGen.a
>>> ../../lib/libLLVMCore.a ../../lib/libLLVMipo.a ../../lib/libLLVMIRReader.a
>>> ../../lib/libLLVMInstCombine.a ../../lib/libLLVMInstrumentation.a
>>> ../../lib/libLLVMLinker.a ../../lib/libLLVMObjCARCOpts.a
>>> ../../lib/libLLVMScalarOpts.a ../../lib/libLLVMSupport.a
>>> ../../lib/libLLVMTarget.a ../../lib/libLLVMTransformUtils.a
>>> ../../lib/libLLVMVectorize.a ../../lib/libLLVMAArch64Desc.a
>>> ../../lib/libLLVMAArch64AsmPrinter.a ../../lib/libLLVMAArch64Info.a
>>> ../../lib/libLLVMAArch64Utils.a ../../lib/libLLVMAMDGPUDesc.a
>>> ../../lib/libLLVMAMDGPUAsmPrinter.a ../../lib/libLLVMAMDGPUInfo.a
>>> ../../lib/libLLVMAMDGPUUtils.a ../../lib/libLLVMARMDesc.a
>>> ../../lib/libLLVMARMAsmPrinter.a ../../lib/libLLVMARMInfo.a
>>> ../../lib/libLLVMBPFAsmPrinter.a ../../lib/libLLVMHexagonDesc.a
>>> ../../lib/libLLVMHexagonInfo.a ../../lib/libLLVMLanaiDesc.a
>>> ../../lib/libLLVMLanaiAsmPrinter.a ../../lib/libLLVMLanaiInfo.a
>>> ../../lib/libLLVMMipsAsmPrinter.a ../../lib/libLLVMMSP430AsmPrinter.a
>>> ../../lib/libLLVMNVPTXAsmPrinter.a ../../lib/libLLVMAsmParser.a
>>> ../../lib/libLLVMPowerPCAsmPrinter.a ../../lib/libLLVMSparcAsmPrinter.a
>>> ../../lib/libLLVMSystemZDesc.a ../../lib/libLLVMSystemZAsmPrinter.a
>>> ../../lib/libLLVMSystemZInfo.a ../../lib/libLLVMGlobalISel.a
>>> ../../lib/libLLVMX86AsmPrinter.a ../../lib/libLLVMX86Utils.a
>>> ../../lib/libLLVMXCoreAsmPrinter.a ../../lib/libLLVMAsmPrinter.a
>>> ../../lib/libLLVMDebugInfoCodeView.a ../../lib/libLLVMDebugInfoMSF.a
>>> ../../lib/libLLVMSelectionDAG.a ../../lib/libLLVMCodeGen.a
>>> ../../lib/libLLVMBitWriter.a ../../lib/libLLVMScalarOpts.a
>>> ../../lib/libLLVMInstCombine.a ../../lib/libLLVMTarget.a
>>> ../../lib/libLLVMMCDisassembler.a ../../lib/libLLVMTransformUtils.a
>>> ../../lib/libLLVMAnalysis.a ../../lib/libLLVMObject.a
>>> ../../lib/libLLVMMCParser.a ../../lib/libLLVMMC.a
>>> ../../lib/libLLVMBitReader.a ../../lib/libLLVMProfileData.a
>>> ../../lib/libLLVMCore.a ../../lib/libLLVMBinaryFormat.a
>>> ../../lib/libLLVMSupport.a -lcurses -lz -lm ../../lib/libLLVMDemangle.a
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::releaseMemory()    in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::verify() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getRoot() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::reset()   in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getRoots() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::updateDFSNumbers() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::isPostDominator() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock, true>::wipe()
>>>   in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getRootNode()    in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getRootNode() const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::DominatorTreeBase() in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::DominatorTreeBase() in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::dominates(llvm::DomTreeNodeBase<llvm::BasicBlock> const*,
>>> llvm::DomTreeNodeBase<llvm::BasicBlock> const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::properlyDominates(llvm::DomTreeNodeBase<llvm::BasicBlock> const*,
>>> llvm::DomTreeNodeBase<llvm::BasicBlock> const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::dominatedBySlowTreeWalk(llvm::DomTreeNodeBase<llvm::BasicBlock>
>>> const*, llvm::DomTreeNodeBase<llvm::BasicBlock> const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::changeImmediateDominator(llvm::DomTreeNodeBase<llvm::BasicBlock>*,
>>> llvm::DomTreeNodeBase<llvm::BasicBlock>*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::dominates(llvm::BasicBlock const*, llvm::BasicBlock const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::properlyDominates(llvm::BasicBlock const*, llvm::BasicBlock const*)
>>> const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::findNearestCommonDominator(llvm::BasicBlock const*, llvm::BasicBlock
>>> const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::findNearestCommonDominator(llvm::BasicBlock*, llvm::BasicBlock*)
>>> const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::changeImmediateDominator(llvm::BasicBlock*, llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::addNewBlock(llvm::BasicBlock*, llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::insertEdge(llvm::BasicBlock*, llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::deleteEdge(llvm::BasicBlock*, llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::operator=(llvm::DominatorTreeBase<llvm::BasicBlock, true>&&) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::DominatorTreeBase(llvm::DominatorTreeBase<llvm::BasicBlock, true>&&)
>>> in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::DominatorTreeBase(llvm::DominatorTreeBase<llvm::BasicBlock, true>&&)
>>> in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::compare(llvm::DominatorTreeBase<llvm::BasicBlock, true> const&)
>>> const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::operator[](llvm::BasicBlock*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::setNewRoot(llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::addRoot(llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::splitBlock(llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getNode(llvm::BasicBlock*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::eraseNode(llvm::BasicBlock*) in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::isReachableFromEntry(llvm::BasicBlock const*) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::print(llvm::raw_ostream&) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::getDescendants(llvm::BasicBlock*,
>>> llvm::SmallVectorImpl<llvm::BasicBlock*>&) const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::isReachableFromEntry(llvm::DomTreeNodeBase<llvm::BasicBlock> const*)
>>> const in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> duplicate symbol llvm::DominatorTreeBase<llvm::BasicBlock,
>>> true>::isVirtualRoot(llvm::DomTreeNodeBase<llvm::BasicBlock> const*) const
>>> in:
>>>     ../../lib/libLLVMAnalysis.a(PostDominators.cpp.o)
>>>     ../../lib/libLLVMCore.a(Dominators.cpp.o)
>>> ld: 39 duplicate symbols for architecture x86_64
>>> collect2: error: ld returned 1 exit status
>>> make[2]: *** [bin/bugpoint] Error 1
>>> make[1]: *** [tools/bugpoint/CMakeFiles/bugpoint.dir/all] Error 2
>>> make: *** [all] Error 2
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170826/8d0198ec/attachment.html>


More information about the llvm-dev mailing list