[llvm] 2c3cf62 - Make TableGenGlobalISel an object library
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 31 14:18:15 PDT 2021
You can see my exact build scripts here:
https://github.com/preames/llvm-aws-builder
It's a pretty basic release + assertions built on ubuntu on an x86 AWS
instance. Really nothing that interesting.
Philip
On 3/31/21 1:47 PM, Aaron Puchert wrote:
> What's the build configuration that you're using? There are many
> supported configurations out there (shared libraries, static
> libraries, both, LLVM_LINK_LLVM_DYLIB and so on) and of course I
> couldn't test all of them.
>
> CMake should be able to figure what needs to be rebuild, so that
> shouldn't be an issue.
>
> So far I haven't gotten any bot complaints, I just have your mail.
>
> Am 31.03.21 um 22:28 schrieb Philip Reames:
>> Reverted due to link errors.
>>
>> usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `(anonymous namespace)::CombineRule::reorientToRoots()':
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule15reorientToRootsEv+0xeb5):
>> undefined reference to `llvm::GIMatchDagEdge::reverse()'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `llvm::GIMatchDag::dump() const':
>> GICombinerEmitter.cpp:(.text._ZNK4llvm10GIMatchDag4dumpEv[_ZNK4llvm10GIMatchDag4dumpEv]+0x15):
>> undefined reference to `llvm::GIMatchDag::print(llvm::raw_ostream&)
>> const'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `std::__cxx11::basic_string<char, std::char_traits<char>,
>> std::allocator<char> >
>> llvm::to_string<llvm::GIMatchDagInstr>(llvm::GIMatchDagInstr const&)':
>> GICombinerEmitter.cpp:(.text._ZN4llvm9to_stringINS_15GIMatchDagInstrEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_[_ZN4llvm9to_stringINS_15GIMatchDagInstrEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_]+0xa0):
>> undefined reference to `llvm::operator<<(llvm::raw_ostream&,
>> llvm::GIMatchDagInstr const&)'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `std::__cxx11::basic_string<char, std::char_traits<char>,
>> std::allocator<char> >
>> llvm::to_string<llvm::GIMatchDagEdge>(llvm::GIMatchDagEdge const&)':
>> GICombinerEmitter.cpp:(.text._ZN4llvm9to_stringINS_14GIMatchDagEdgeEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_[_ZN4llvm9to_stringINS_14GIMatchDagEdgeEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_]+0xa0):
>> undefined reference to `llvm::operator<<(llvm::raw_ostream&,
>> llvm::GIMatchDagEdge const&)'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `(anonymous
>> namespace)::GICombinerEmitter::generateCodeForTree(llvm::raw_ostream&,
>> llvm::GIMatchTree const&, llvm::StringRef) const':
>> GICombinerEmitter.cpp:(.text._ZNK12_GLOBAL__N_117GICombinerEmitter19generateCodeForTreeERN4llvm11raw_ostreamERKNS1_11GIMatchTreeENS1_9StringRefE+0x168a):
>> undefined reference to `llvm::CodeExpander::emit(llvm::raw_ostream&)
>> const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZNK12_GLOBAL__N_117GICombinerEmitter19generateCodeForTreeERN4llvm11raw_ostreamERKNS1_11GIMatchTreeENS1_9StringRefE+0x1cba):
>> undefined reference to `llvm::CodeExpander::emit(llvm::raw_ostream&)
>> const'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `(anonymous
>> namespace)::CombineRule::parseInstructionMatcher(llvm::CodeGenTarget
>> const&, llvm::StringInit*, llvm::Init const&,
>> llvm::StringMap<std::vector<(anonymous
>> namespace)::CombineRule::VarInfo, std::allocator<(anonymous
>> namespace)::CombineRule::VarInfo> >, llvm::MallocAllocator>&,
>> llvm::StringMap<std::vector<(anonymous
>> namespace)::CombineRule::VarInfo, std::allocator<(anonymous
>> namespace)::CombineRule::VarInfo> >, llvm::MallocAllocator>&)':
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule23parseInstructionMatcherERKN4llvm13CodeGenTargetEPNS1_10StringInitERKNS1_4InitERNS1_9StringMapISt6vectorINS0_7VarInfoESaISC_EENS1_15MallocAllocatorEEESH_+0x1f2):
>> undefined reference to
>> `llvm::GIMatchDagOperandListContext::makeOperandList(llvm::CodeGenInstruction
>> const&)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule23parseInstructionMatcherERKN4llvm13CodeGenTargetEPNS1_10StringInitERKNS1_4InitERNS1_9StringMapISt6vectorINS0_7VarInfoESaISC_EENS1_15MallocAllocatorEEESH_+0x3d3):
>> undefined reference to
>> `llvm::GIMatchDagOpcodePredicate::GIMatchDagOpcodePredicate(llvm::GIMatchDagContext&,
>> llvm::StringRef, llvm::CodeGenInstruction const&)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule23parseInstructionMatcherERKN4llvm13CodeGenTargetEPNS1_10StringInitERKNS1_4InitERNS1_9StringMapISt6vectorINS0_7VarInfoESaISC_EENS1_15MallocAllocatorEEESH_+0x42e):
>> undefined reference to
>> `llvm::GIMatchDagOperandList::operator[](llvm::StringRef) const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule23parseInstructionMatcherERKN4llvm13CodeGenTargetEPNS1_10StringInitERKNS1_4InitERNS1_9StringMapISt6vectorINS0_7VarInfoESaISC_EENS1_15MallocAllocatorEEESH_+0x904):
>> undefined reference to `llvm::GIMatchDagInstr::setMatchRoot()'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_111CombineRule23parseInstructionMatcherERKN4llvm13CodeGenTargetEPNS1_10StringInitERKNS1_4InitERNS1_9StringMapISt6vectorINS0_7VarInfoESaISC_EENS1_15MallocAllocatorEEESH_+0x10ac):
>> undefined reference to
>> `llvm::GIMatchDagOperandListContext::makeOperandList(llvm::CodeGenInstruction
>> const&)'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `(anonymous
>> namespace)::GICombinerEmitter::gatherRules(std::vector<std::unique_ptr<(anonymous
>> namespace)::CombineRule, std::default_delete<(anonymous
>> namespace)::CombineRule> >, std::allocator<std::unique_ptr<(anonymous
>> namespace)::CombineRule, std::default_delete<(anonymous
>> namespace)::CombineRule> > > >&, std::vector<llvm::Record*,
>> std::allocator<llvm::Record*> > const&&)':
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x899):
>> undefined reference to `llvm::GIMatchDagEdge::isDefToUse() const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x1088):
>> undefined reference to
>> `llvm::GIMatchDag::writeDOTGraph(llvm::raw_ostream&, llvm::StringRef)
>> const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x13c6):
>> undefined reference to
>> `llvm::GIMatchDagOperandListContext::makeEmptyOperandList()'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x15f5):
>> undefined reference to `llvm::GIMatchDagInstr::setMatchRoot()'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x16a2):
>> undefined reference to
>> `llvm::GIMatchDagOneOfOpcodesPredicate::GIMatchDagOneOfOpcodesPredicate(llvm::GIMatchDagContext&,
>> llvm::StringRef)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x16f8):
>> undefined reference to
>> `llvm::GIMatchDagOperandList::operator[](llvm::StringRef) const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x19cb):
>> undefined reference to
>> `llvm::GIMatchDagOperandListContext::makeEmptyOperandList()'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x1c3e):
>> undefined reference to
>> `llvm::GIMatchDagSameMOPredicate::GIMatchDagSameMOPredicate(llvm::GIMatchDagContext&,
>> llvm::StringRef)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x1c94):
>> undefined reference to
>> `llvm::GIMatchDagOperandList::operator[](llvm::StringRef) const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN12_GLOBAL__N_117GICombinerEmitter11gatherRulesERSt6vectorISt10unique_ptrINS_11CombineRuleESt14default_deleteIS3_EESaIS6_EEOKS1_IPN4llvm6RecordESaISC_EE+0x1d2d):
>> undefined reference to
>> `llvm::GIMatchDagOperandList::operator[](llvm::StringRef) const'
>> /usr/bin/ld: CMakeFiles/obj.llvm-tblgen.dir/GICombinerEmitter.cpp.o:
>> in function `llvm::EmitGICombiner(llvm::RecordKeeper&,
>> llvm::raw_ostream&)':
>> GICombinerEmitter.cpp:(.text._ZN4llvm14EmitGICombinerERNS_12RecordKeeperERNS_11raw_ostreamE+0x36c):
>> undefined reference to
>> `llvm::GIMatchTreeBuilderLeafInfo::GIMatchTreeBuilderLeafInfo(llvm::GIMatchTreeBuilder&,
>> llvm::StringRef, unsigned int, llvm::GIMatchDag const&, void*)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN4llvm14EmitGICombinerERNS_12RecordKeeperERNS_11raw_ostreamE+0x463):
>> undefined reference to
>> `llvm::GIMatchTreeBuilderLeafInfo::GIMatchTreeBuilderLeafInfo(llvm::GIMatchTreeBuilder&,
>> llvm::StringRef, unsigned int, llvm::GIMatchDag const&, void*)'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN4llvm14EmitGICombinerERNS_12RecordKeeperERNS_11raw_ostreamE+0x86d):
>> undefined reference to `llvm::GIMatchTreeBuilder::run()'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN4llvm14EmitGICombinerERNS_12RecordKeeperERNS_11raw_ostreamE+0x2a71):
>> undefined reference to
>> `llvm::GIMatchTree::writeDOTGraph(llvm::raw_ostream&) const'
>> /usr/bin/ld:
>> GICombinerEmitter.cpp:(.text._ZN4llvm14EmitGICombinerERNS_12RecordKeeperERNS_11raw_ostreamE+0x2da1):
>> undefined reference to
>> `llvm::GIMatchDagOperandListContext::print(llvm::raw_ostream&) const'
>> collect2: error: ld returned 1 exit status
>> make[3]: Leaving directory '/home/ubuntu/llvm-repo/build'
>> make[2]: Leaving directory '/home/ubuntu/llvm-repo/build'
>> make[1]: Leaving directory '/home/ubuntu/llvm-repo/build'
>> make: Leaving directory '/home/ubuntu/llvm-repo/build'
>> make[3]: ***
>> [utils/TableGen/CMakeFiles/llvm-tblgen.dir/build.make:180:
>> bin/llvm-tblgen] Error 1
>> make[2]: *** [CMakeFiles/Makefile2:8277:
>> utils/TableGen/CMakeFiles/llvm-tblgen.dir/all] Error 2
>> make[1]: *** [CMakeFiles/Makefile2:22973:
>> tools/opt/CMakeFiles/opt.dir/rule] Error 2
>> make: *** [Makefile:6452: opt] Error 2
>>
>> This was an incremental build, and it looks like you're toggling
>> cmake. Do you need to trigger a reconfigure?
>>
>> Philip
>>
>> On 3/31/21 1:22 PM, Aaron Puchert via llvm-commits wrote:
>>> Author: Aaron Puchert
>>> Date: 2021-03-31T22:20:56+02:00
>>> New Revision: 2c3cf62d4a26de85aab180bb43a579c913b17f3e
>>>
>>> URL:
>>> https://github.com/llvm/llvm-project/commit/2c3cf62d4a26de85aab180bb43a579c913b17f3e
>>> DIFF:
>>> https://github.com/llvm/llvm-project/commit/2c3cf62d4a26de85aab180bb43a579c913b17f3e.diff
>>>
>>> LOG: Make TableGenGlobalISel an object library
>>>
>>> That's how it was originally intended but that wasn't possible because
>>> we still needed to support older CMake versions.
>>>
>>> The problem here is that the sources in TableGenGlobalISel are meant to
>>> be linked into both llvm-tblgen and TableGenTests (a unit test), but
>>> not
>>> be part of LLVM proper. So they shouldn't be an ordinary LLVM
>>> component.
>>> Because they are used in llvm-tblgen, they can't draw in the LLVM dylib
>>> dependency, but then we'd have to do the same thing in TableGenTests to
>>> make sure we don't link both a static Support library and another copy
>>> through the LLVM dylib.
>>>
>>> With an object library we're just reusing the object files and don't
>>> have to care about dependencies at all.
>>>
>>> Reviewed By: beanz
>>>
>>> Differential Revision: https://reviews.llvm.org/D74588
>>>
>>> Added:
>>>
>>> Modified:
>>> llvm/unittests/TableGen/CMakeLists.txt
>>> llvm/utils/TableGen/CMakeLists.txt
>>> llvm/utils/TableGen/GlobalISel/CMakeLists.txt
>>>
>>> Removed:
>>>
>>>
>>> ################################################################################
>>>
>>> diff --git a/llvm/unittests/TableGen/CMakeLists.txt
>>> b/llvm/unittests/TableGen/CMakeLists.txt
>>> index 178018ba89674..c678f2b639d97 100644
>>> --- a/llvm/unittests/TableGen/CMakeLists.txt
>>> +++ b/llvm/unittests/TableGen/CMakeLists.txt
>>> @@ -12,6 +12,7 @@ add_public_tablegen_target(AutomataTestTableGen)
>>> add_llvm_unittest(TableGenTests
>>> CodeExpanderTest.cpp
>>> AutomataTest.cpp
>>> + $<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
>>> )
>>> include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../utils/TableGen)
>>> -target_link_libraries(TableGenTests PRIVATE LLVMTableGenGlobalISel
>>> LLVMTableGen)
>>> +target_link_libraries(TableGenTests PRIVATE LLVMTableGen)
>>>
>>> diff --git a/llvm/utils/TableGen/CMakeLists.txt
>>> b/llvm/utils/TableGen/CMakeLists.txt
>>> index 9e918852b1c0f..8b01a40f3ad58 100644
>>> --- a/llvm/utils/TableGen/CMakeLists.txt
>>> +++ b/llvm/utils/TableGen/CMakeLists.txt
>>> @@ -56,6 +56,6 @@ add_tablegen(llvm-tblgen LLVM
>>> X86RecognizableInstr.cpp
>>> WebAssemblyDisassemblerEmitter.cpp
>>> CTagsEmitter.cpp
>>> + $<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
>>> )
>>> -target_link_libraries(llvm-tblgen PRIVATE LLVMTableGenGlobalISel)
>>> set_target_properties(llvm-tblgen PROPERTIES FOLDER "Tablegenning")
>>>
>>> diff --git a/llvm/utils/TableGen/GlobalISel/CMakeLists.txt
>>> b/llvm/utils/TableGen/GlobalISel/CMakeLists.txt
>>> index c23ef6742f32e..1cd741cd6be1a 100644
>>> --- a/llvm/utils/TableGen/GlobalISel/CMakeLists.txt
>>> +++ b/llvm/utils/TableGen/GlobalISel/CMakeLists.txt
>>> @@ -3,7 +3,7 @@ set(LLVM_LINK_COMPONENTS
>>> TableGen
>>> )
>>> -add_llvm_library(LLVMTableGenGlobalISel STATIC
>>> DISABLE_LLVM_LINK_LLVM_DYLIB
>>> +add_llvm_library(LLVMTableGenGlobalISel OBJECT
>>> CodeExpander.cpp
>>> GIMatchDag.cpp
>>> GIMatchDagEdge.cpp
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
More information about the llvm-commits
mailing list