[llvm] 2c3cf62 - Make TableGenGlobalISel an object library
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 31 13:28:24 PDT 2021
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