ispc fails to compile on systemss with modern clang/llvm

28 views
Skip to first unread message

Branko Badrljica

unread,
Apr 1, 2019, 9:34:59 AM4/1/19
to Intel SPMD Program Compiler Developers
I tired compiling ispc-1.9.2/1.10.0/9999.

I have gcc -7.40 and 8.3.0  and llvm/clang 7.0.1 and 8.0.0.

Whatever I tried, comiilation always fails at the same point:

echo Creating ispc executable
Creating ispc executable
x86_64-pc-linux-gnu-g++ -march=native -O3 -pipe -Wl,-O1 -Wl,--as-needed -o ispc objs/ast.o objs/builtins.o objs/cbackend.o objs/ctx.o objs/decl.o objs/expr.o objs/func.o objs/ispc.o objs/llvmutil.o objs/main.o objs/module.o objs/opt.o objs/stmt.o objs/sym.o objs/type.o objs/util.o objs/builtins-dispatch.o objs/builtins-target-avx2-i64x4-32bit.o objs/builtins-target-avx11-i64x4-32bit.o objs/builtins-target-avx1-i64x4-32bit.o objs/builtins-target-avx1-32bit.o objs/builtins-target-avx1-x2-32bit.o objs/builtins-target-avx11-32bit.o objs/builtins-target-avx11-x2-32bit.o objs/builtins-target-avx2-32bit.o objs/builtins-target-avx2-x2-32bit.o objs/builtins-target-sse2-32bit.o objs/builtins-target-sse2-x2-32bit.o objs/builtins-target-sse4-8-32bit.o objs/builtins-target-sse4-16-32bit.o objs/builtins-target-sse4-32bit.o objs/builtins-target-sse4-x2-32bit.o objs/builtins-target-generic-4-32bit.o objs/builtins-target-generic-8-32bit.o objs/builtins-target-generic-16-32bit.o objs/builtins-target-generic-32-32bit.o objs/builtins-target-generic-64-32bit.o objs/builtins-target-generic-1-32bit.o objs/builtins-target-knl-32bit.o objs/builtins-target-skx-32bit.o objs/builtins-target-avx2-i64x4-64bit.o objs/builtins-target-avx11-i64x4-64bit.o objs/builtins-target-avx1-i64x4-64bit.o objs/builtins-target-avx1-64bit.o objs/builtins-target-avx1-x2-64bit.o objs/builtins-target-avx11-64bit.o objs/builtins-target-avx11-x2-64bit.o objs/builtins-target-avx2-64bit.o objs/builtins-target-avx2-x2-64bit.o objs/builtins-target-sse2-64bit.o objs/builtins-target-sse2-x2-64bit.o objs/builtins-target-sse4-8-64bit.o objs/builtins-target-sse4-16-64bit.o objs/builtins-target-sse4-64bit.o objs/builtins-target-sse4-x2-64bit.o objs/builtins-target-generic-4-64bit.o objs/builtins-target-generic-8-64bit.o objs/builtins-target-generic-16-64bit.o objs/builtins-target-generic-32-64bit.o objs/builtins-target-generic-64-64bit.o objs/builtins-target-generic-1-64bit.o objs/builtins-target-knl-64bit.o objs/builtins-target-skx-64bit.o objs/builtins-c-32.o objs/builtins-c-64.o objs/stdlib_mask1_ispc.o objs/stdlib_mask8_ispc.o objs/stdlib_mask16_ispc.o objs/stdlib_mask32_ispc.o objs/stdlib_mask64_ispc.o objs/parse.o objs/lex.o -L/usr/lib64/llvm/8/lib64  -lclangFrontend -lclangDriver -lclangSerialization -lclangParse -lclangSema -lclangAnalysis -lclangAST -lclangBasic -lclangEdit -lclangLex -lLLVMOption -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMExecutionEngine -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMRuntimeDyld -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle -lpthread -lcurses -lz -ltinfo -ldl
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/llvmutil.o: in function `lDumpValue(llvm::Value*, std::set<llvm::Value*, std::less<llvm::Value*>, std::allocator<llvm::Value*> >&)':
llvmutil.cpp:(.text+0x3370): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: llvmutil.cpp:(.text+0x3418): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o: in function `DebugPass::runOnModule(llvm::Module&)':
opt.cpp:(.text+0x432): undefined reference to `llvm::Module::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o: in function `IsCompileTimeConstantPass::runOnBasicBlock(llvm::BasicBlock&)':
opt.cpp:(.text+0x15cd): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: opt.cpp:(.text+0x16f4): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o: in function `ReplaceStdlibShiftPass::runOnBasicBlock(llvm::BasicBlock&)':
opt.cpp:(.text+0x2ac1): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: opt.cpp:(.text+0x2bf6): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o: in function `InstructionSimplifyPass::runOnBasicBlock(llvm::BasicBlock&)':
opt.cpp:(.text+0x3b5c): undefined reference to `llvm::Value::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o:opt.cpp:(.text+0x3ca2): more undefined references to `llvm::Value::dump() const' follow
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: objs/opt.o: in function `Optimize(llvm::Module*, int)':
opt.cpp:(.text+0x11758): undefined reference to `llvm::Module::dump() const'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: opt.cpp:(.text+0x117a7): undefined reference to `llvm::Module::dump() const'
collect2: error: ld returned 1 exit status
make: *** [Makefile:276: ispc] Error 1

Branko Badrljica

unread,
Apr 1, 2019, 9:54:47 AM4/1/19
to Intel SPMD Program Compiler Developers
Errrm, scratch that. All I had to do is to recompile llvm/clang withj debug flag and now ispc compiles fine, at least git version...


Dmitry Babokin

unread,
Apr 1, 2019, 8:01:28 PM4/1/19
to ispc...@googlegroups.com
It's not exactly debug flag, you need -DLLVM_ENABLE_DUMP=ON when configuring LLVM with CMake. Or build LLVM using our alloy.py script.

Also, it's recommended that LLVM and ISPC are built with the same compiler (either gcc or clang), some gcc/clang versions are known to have ABI incompatibility (fixed in the latest gcc/clang combination).

On Mon, Apr 1, 2019 at 6:54 AM Branko Badrljica <bran...@gmail.com> wrote:
Errrm, scratch that. All I had to do is to recompile llvm/clang withj debug flag and now ispc compiles fine, at least git version...


--
You received this message because you are subscribed to the Google Groups "Intel SPMD Program Compiler Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ispc-dev+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages