Alex Susu via llvm-dev
2021-Feb-06 17:26 UTC
[llvm-dev] Linker error while building a new back end in the latest LLVM from GitHub
Hello.
I would like to come back to this message.
It seems the reason of these linker errors are some changes performed in
LLVM itself
in the last 2 years, since I am able to run my back end in an older LLVM build
downloaded
from the source repository in Mar 2019. I apologize for being a bit in the haze
- I didn't
follow closely the changes performed to LLVM lately.
If interested please find my main CMakeLists.txt for my Connex LLVM back
end:
add_llvm_component_group(Connex)
set(LLVM_TARGET_DEFINITIONS Connex.td)
tablegen(LLVM ConnexGenRegisterInfo.inc -gen-register-info)
tablegen(LLVM ConnexGenInstrInfo.inc -gen-instr-info)
tablegen(LLVM ConnexGenAsmWriter.inc -gen-asm-writer)
tablegen(LLVM ConnexGenAsmMatcher.inc -gen-asm-matcher)
tablegen(LLVM ConnexGenDAGISel.inc -gen-dag-isel)
tablegen(LLVM ConnexGenMCCodeEmitter.inc -gen-emitter)
tablegen(LLVM ConnexGenCallingConv.inc -gen-callingconv)
tablegen(LLVM ConnexGenSubtargetInfo.inc -gen-subtarget)
add_public_tablegen_target(ConnexCommonTableGen)
add_llvm_target(ConnexCodeGen
ConnexAsmPrinter.cpp
ConnexFrameLowering.cpp
ConnexHazardRecognizer.cpp
# ConnexHazardRecognizerPreRAScheduler.cpp
ConnexInstrInfo.cpp
ConnexISelDAGToDAG.cpp
ConnexISelLowering.cpp
ConnexMCInstLower.cpp
ConnexRegisterInfo.cpp
ConnexSelectionDAGInfo.cpp
ConnexSubtarget.cpp
ConnexTargetMachine.cpp
LINK_COMPONENTS
#Analysis
AsmPrinter
CodeGen
Core
ConnexDesc
ConnexInfo
MC
SelectionDAG
Support
Target
#TransformUtils
ADD_TO_COMPONENT
Connex
)
#add_subdirectory(AsmParser) # 2021_01
#add_subdirectory(InstPrinter)
#add_subdirectory(Disassembler)
add_subdirectory(MCTargetDesc)
add_subdirectory(TargetInfo)
Please keep in mind that the source files of my Connex LLVM back
end are in a ZIP archive at this address:
https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip .
Thank you very much,
Alex
On 2/3/2021 11:43 PM, Alex Susu wrote:> Hello.
> I am trying to build against the latest LLVM source from GitHub (from
Jan 23 2021) my
> Connex processor back end, which is mostly inspired from the BPF and Mips
back end.
> I did my best to correct all the errors that appeared, but I now get a
rather strange
> linker error that I don't know exactly how to solve (maybe somebody is
more experienced
> than me on this). Maybe I have an error in
lib/Target/Connex/CMakeLists.txt.
>
> The error I get while building LLVM is:
> <<cd
/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib/Target/Connex &&
> /usr/bin/cmake -E cmake_link_script
CMakeFiles/LLVMConnexCodeGen.dir/link.txt --verbose=1
> /usr/bin/c++ -fPIC -fPIC -fvisibility-inlines-hidden
-Werror=date-time -Wall
> -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers
> -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized
> -Wno-class-memaccess -Wno-redundant-move -Wno-noexcept-type
-Wdelete-non-virtual-dtor
> -Wsuggest-override -Wno-comment -g
> -Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/./lib
-Wl,-z,defs
> -Wl,-z,nodelete -shared -Wl,-soname,libLLVMConnexCodeGen.so.12git -o
> ../../libLLVMConnexCodeGen.so.12git
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexAsmPrinter.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexFrameLowering.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexHazardRecognizer.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexInstrInfo.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelDAGToDAG.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelLowering.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexMCInstLower.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexRegisterInfo.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSelectionDAGInfo.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSubtarget.cpp.o
> CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o
-Wl,-rpath,"\$ORIGIN/../lib"
> ../../libLLVMAsmPrinter.so.12git ../../libLLVMConnexDesc.so.12git
> ../../libLLVMConnexInfo.so.12git ../../libLLVMSelectionDAG.so.12git
> ../../libLLVMCodeGen.so.12git ../../libLLVMTarget.so.12git
../../libLLVMMC.so.12git
> ../../libLLVMCore.so.12git ../../libLLVMSupport.so.12git
> -Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib
> /usr/bin/ld:
CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in
> function
`llvm::TargetTransformInfo::Model<llvm::ConnexTTIImpl>::~Model()':
>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfo.h:1672:
> undefined reference to `llvm::TargetTransformInfo::Concept::~Concept()'
> /usr/bin/ld:
CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in
> function
>
`llvm::TargetTransformInfoImplCRTPBase<llvm::ConnexTTIImpl>::getUserCost(llvm::User
> const*, llvm::ArrayRef<llvm::Value const*>,
llvm::TargetTransformInfo::TargetCostKind)':
>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:911:
> undefined reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned
> int, llvm::CallBase const&)'
> /usr/bin/ld:
>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:953:
> undefined reference to
`llvm::TargetTransformInfo::getOperandInfo(llvm::Value const*,
> llvm::TargetTransformInfo::OperandValueProperties&)'
> ...
> ...
> /usr/bin/ld:
>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1805:
undefined
> reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned int,
> llvm::Type*, llvm::ArrayRef<llvm::Type*>)'
> /usr/bin/ld:
>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1826:
undefined
> reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned int,
> llvm::Type*, llvm::ArrayRef<llvm::Type*>, llvm::FastMathFlags)'
> collect2: error: ld returned 1 exit status>>
>
>
> Please find if you have the time also most of the source files of my
Connex LLVM back
> end in the ZIP archive at this address:
> https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip (please
note the file
> ERROR_LINKER.txt contains the above mentioned linker error).
> Please let me know if you want me to provide any further information
about my build.
>
> Thank you very much,
> Alex
Alex Susu via llvm-dev
2021-Feb-09 11:33 UTC
[llvm-dev] Linker error while building a new back end in the latest LLVM from GitHub
Hello.
I would like to inform that I managed to solve the problem mentioned here
and to
build LLVM today.
What I had to do was to add (uncomment) in the
lib/Target/Connex/CMakeLists.txt (my
main back end CMakeLists file), in the section LINK_COMPONENTS the following 2
lines:
Analysis
TransformUtils
I got inspired a bit from the XCore back end's main CMakeLists.txt
since my back
end's ConnexTargetTransformInfo.h is inspired from XCore.
If ever, you can find the corrected CMakeLists.txt at
https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip.
However, I still have issues. While running llc I get the following error:
********** EXPANDING POST-RA PSEUDO INSTRS **********
********** Function: MatMul_BTransposed
real copy: $r5 = COPY $r0
Target didn't implement TargetInstrInfo::copyPhysReg!
UNREACHABLE executed at
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/TargetInstrInfo.h:951!
...
#8 0x00007fce772ce4b6
llvm::TargetInstrInfo::isCopyInstrImpl(llvm::MachineInstr
const&) const
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/TargetInstrInfo.h:960:3
#9 0x00007fce712082c8 (anonymous
namespace)::ExpandPostRA::LowerCopy(llvm::MachineInstr*)
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/lib/CodeGen/ExpandPostRAPseudos.cpp:166:19
#10 0x00007fce71208611 (anonymous
namespace)::ExpandPostRA::runOnMachineFunction(llvm::MachineFunction&)
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/lib/CodeGen/ExpandPostRAPseudos.cpp:215:20
...
#17 0x00005560165771f7 compileModule(char**, llvm::LLVMContext&)
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/tools/llc/llc.cpp:661:66
But actually I did implement TargetInstrInfo::copyPhysReg() in
ConnexInstrInfo.cpp in
my back end (you can see my back end code at
https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip).
Can somebody help me with this new llc runtime error that just appeared?
(It looks
like llc does not load the object file of ConnexInstrInfo.cpp, so it might be a
hidden
linker issue).
Thank you very much,
Alex
On 2/6/2021 7:26 PM, Alex Susu wrote:> Hello.
> I would like to come back to this message.
> It seems the reason of these linker errors are some changes performed
in LLVM itself
> in the last 2 years, since I am able to run my back end in an older LLVM
build downloaded
> from the source repository in Mar 2019. I apologize for being a bit in the
haze - I didn't
> follow closely the changes performed to LLVM lately.
>
> If interested please find my main CMakeLists.txt for my Connex LLVM
back end:
> add_llvm_component_group(Connex)
>
> set(LLVM_TARGET_DEFINITIONS Connex.td)
>
> tablegen(LLVM ConnexGenRegisterInfo.inc -gen-register-info)
> tablegen(LLVM ConnexGenInstrInfo.inc -gen-instr-info)
> tablegen(LLVM ConnexGenAsmWriter.inc -gen-asm-writer)
> tablegen(LLVM ConnexGenAsmMatcher.inc -gen-asm-matcher)
> tablegen(LLVM ConnexGenDAGISel.inc -gen-dag-isel)
> tablegen(LLVM ConnexGenMCCodeEmitter.inc -gen-emitter)
> tablegen(LLVM ConnexGenCallingConv.inc -gen-callingconv)
> tablegen(LLVM ConnexGenSubtargetInfo.inc -gen-subtarget)
> add_public_tablegen_target(ConnexCommonTableGen)
>
> add_llvm_target(ConnexCodeGen
> ConnexAsmPrinter.cpp
> ConnexFrameLowering.cpp
> ConnexHazardRecognizer.cpp
> # ConnexHazardRecognizerPreRAScheduler.cpp
> ConnexInstrInfo.cpp
> ConnexISelDAGToDAG.cpp
> ConnexISelLowering.cpp
> ConnexMCInstLower.cpp
> ConnexRegisterInfo.cpp
> ConnexSelectionDAGInfo.cpp
> ConnexSubtarget.cpp
> ConnexTargetMachine.cpp
>
> LINK_COMPONENTS
> #Analysis
> AsmPrinter
> CodeGen
> Core
> ConnexDesc
> ConnexInfo
> MC
> SelectionDAG
> Support
> Target
> #TransformUtils
>
> ADD_TO_COMPONENT
> Connex
> )
>
> #add_subdirectory(AsmParser) # 2021_01
> #add_subdirectory(InstPrinter)
> #add_subdirectory(Disassembler)
> add_subdirectory(MCTargetDesc)
> add_subdirectory(TargetInfo)
>
>
> Please keep in mind that the source files of my Connex LLVM back
> end are in a ZIP archive at this address:
> https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip .
>
>
> Thank you very much,
> Alex
>
>
> On 2/3/2021 11:43 PM, Alex Susu wrote:
>> Hello.
>> I am trying to build against the latest LLVM source from GitHub
(from Jan 23 2021)
>> my Connex processor back end, which is mostly inspired from the BPF and
Mips back end.
>> I did my best to correct all the errors that appeared, but I now
get a rather
>> strange linker error that I don't know exactly how to solve (maybe
somebody is more
>> experienced than me on this). Maybe I have an error in
lib/Target/Connex/CMakeLists.txt.
>>
>> The error I get while building LLVM is:
>> <<cd
/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib/Target/Connex &&
>> /usr/bin/cmake -E cmake_link_script
CMakeFiles/LLVMConnexCodeGen.dir/link.txt --verbose=1
>> /usr/bin/c++ -fPIC -fPIC -fvisibility-inlines-hidden
-Werror=date-time -Wall
>> -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual
>> -Wno-missing-field-initializers -pedantic -Wno-long-long
-Wimplicit-fallthrough
>> -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move
-Wno-noexcept-type
>> -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -g
>>
-Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/./lib
-Wl,-z,defs
>> -Wl,-z,nodelete -shared -Wl,-soname,libLLVMConnexCodeGen.so.12git -o
>> ../../libLLVMConnexCodeGen.so.12git
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexAsmPrinter.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexFrameLowering.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexHazardRecognizer.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexInstrInfo.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelDAGToDAG.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexISelLowering.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexMCInstLower.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexRegisterInfo.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSelectionDAGInfo.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexSubtarget.cpp.o
>> CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o
-Wl,-rpath,"\$ORIGIN/../lib"
>> ../../libLLVMAsmPrinter.so.12git ../../libLLVMConnexDesc.so.12git
>> ../../libLLVMConnexInfo.so.12git ../../libLLVMSelectionDAG.so.12git
>> ../../libLLVMCodeGen.so.12git ../../libLLVMTarget.so.12git
../../libLLVMMC.so.12git
>> ../../libLLVMCore.so.12git ../../libLLVMSupport.so.12git
>> -Wl,-rpath-link,/home/asusu/LLVM/llvm2021_01_23/llvm-project/build/lib
>> /usr/bin/ld:
CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in
>> function
`llvm::TargetTransformInfo::Model<llvm::ConnexTTIImpl>::~Model()':
>>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfo.h:1672:
>> undefined reference to
`llvm::TargetTransformInfo::Concept::~Concept()'
>> /usr/bin/ld:
CMakeFiles/LLVMConnexCodeGen.dir/ConnexTargetMachine.cpp.o: in
>> function
>>
`llvm::TargetTransformInfoImplCRTPBase<llvm::ConnexTTIImpl>::getUserCost(llvm::User
>> const*, llvm::ArrayRef<llvm::Value const*>,
llvm::TargetTransformInfo::TargetCostKind)':
>>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:911:
>> undefined reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned
>> int, llvm::CallBase const&)'
>> /usr/bin/ld:
>>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h:953:
>> undefined reference to
`llvm::TargetTransformInfo::getOperandInfo(llvm::Value const*,
>> llvm::TargetTransformInfo::OperandValueProperties&)'
>> ...
>> ...
>> /usr/bin/ld:
>>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1805:
>> undefined reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned
>> int, llvm::Type*, llvm::ArrayRef<llvm::Type*>)'
>> /usr/bin/ld:
>>
/home/asusu/LLVM/llvm2021_01_23/llvm-project/llvm/include/llvm/CodeGen/BasicTTIImpl.h:1826:
>> undefined reference to
`llvm::IntrinsicCostAttributes::IntrinsicCostAttributes(unsigned
>> int, llvm::Type*, llvm::ArrayRef<llvm::Type*>,
llvm::FastMathFlags)'
>> collect2: error: ld returned 1 exit status>>
>>
>>
>> Please find if you have the time also most of the source files of
my Connex LLVM
>> back end in the ZIP archive at this address:
>> https://sites.google.com/site/alexsusu/myfilecabinet/Connex_be.zip
(please note the file
>> ERROR_LINKER.txt contains the above mentioned linker error).
>> Please let me know if you want me to provide any further
information about my build.
>>
>> Thank you very much,
>> Alex