Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AMDGPU][OpenMP] LLVM{15,16} crashes with "unsupported libcall legalization" when compiling a program with OpenMP offload to the GPU #62066

Open
admnd opened this issue Apr 11, 2023 · 10 comments

Comments

@admnd
Copy link

admnd commented Apr 11, 2023

On my Gentoo Linux machine, if I try to compile a code example that offloads OpenMP to an AMD GPU:

$ /usr/lib/llvm/15/bin/clang++ -v --rocm-device-lib-path=/usr/lib/amdgcn/bitcode --libomptarget-amdgpu-bc-path="/usr/lib64" -fno-lto -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx1031 -x c openmp_offload.c 
clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/15/bin
Configuration file: /etc/clang/clang++.cfg
System configuration file directory: /etc/clang
Selected GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/13
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
 "/usr/lib/llvm/15/bin/clang-15" -cc1 -triple x86_64-pc-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7 -include /usr/include/gentoo/fortify.h -internal-isystem /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/tmp -ferror-limit 19 -fopenmp -stack-protector 2 -fstack-clash-protection -fgnuc-version=4.2.1 -fcolor-diagnostics -disable-llvm-passes -fopenmp-targets=amdgcn-amd-amdhsa -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/openmp_offload-93bacb.bc -x c openmp_offload.c
clang -cc1 version 15.0.7 based upon LLVM 15.0.7 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include
 /usr/include
End of search list.
 "/usr/lib/llvm/15/bin/clang-15" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-pc-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu gfx1031 -fcuda-is-device -mlink-builtin-bitcode /usr/lib64/libomptarget-amdgpu-gfx1031.bc -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7 -internal-isystem /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include/openmp_wrappers -include __clang_openmp_device_functions.h -include /usr/include/gentoo/fortify.h -internal-isystem /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/tmp -ferror-limit 19 -fvisibility protected -fopenmp -stack-protector 2 -fgnuc-version=4.2.1 -fcolor-diagnostics -fopenmp-is-device -fopenmp-host-ir-file-path /tmp/openmp_offload-93bacb.bc -faddrsig -o /tmp/openmp_offload-007342/openmp_offload-gfx1031.bc -x c openmp_offload.c
clang -cc1 version 15.0.7 based upon LLVM 15.0.7 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring duplicate directory "/usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include"
ignoring duplicate directory "/usr/include"
ignoring duplicate directory "/usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include/openmp_wrappers
 /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7/include
 /usr/include
End of search list.
 "/usr/lib/llvm/15/bin/clang-offload-packager" -o /tmp/openmp_offload-333857.out --image=file=/tmp/openmp_offload-007342/openmp_offload-gfx1031.bc,triple=amdgcn-amd-amdhsa,arch=gfx1031,kind=openmp
 "/usr/lib/llvm/15/bin/clang-15" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/llvm/15/bin/../../../../lib/clang/15.0.7 -fdebug-compilation-dir=/tmp -ferror-limit 19 -fopenmp -stack-protector 2 -fstack-clash-protection -fgnuc-version=4.2.1 -fcolor-diagnostics -fembed-offload-object=/tmp/openmp_offload-333857.out -fopenmp-targets=amdgcn-amd-amdhsa -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/openmp_offload-8aa2b3.o -x ir /tmp/openmp_offload-93bacb.bc
clang -cc1 version 15.0.7 based upon LLVM 15.0.7 default target x86_64-pc-linux-gnu
 "/usr/lib/llvm/15/bin/clang-linker-wrapper" --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ocml.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ockl.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_daz_opt_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_unsafe_math_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_finite_only_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_wavefrontsize64_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_isa_version_1031.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_abi_version_400.bc --host-triple=x86_64-pc-linux-gnu --verbose --linker-path=/usr/bin/x86_64-pc-linux-gnu-ld.bfd -- -pie --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/13 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib /tmp/openmp_offload-8aa2b3.o -lstdc++ -lm -lomp -lomptarget -rpath /usr/lib/llvm/15/lib64 -L/usr/lib/llvm/15/lib64 -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crtn.o
LLVM ERROR: unsupported libcall legalization
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm/15/bin/clang-linker-wrapper --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ocml.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/ockl.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_daz_opt_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_unsafe_math_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_finite_only_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_wavefrontsize64_off.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_isa_version_1031.bc --bitcode-library=openmp-amdgcn-amd-amdhsa-gfx1031=/usr/lib/amdgcn/bitcode/oclc_abi_version_400.bc --host-triple=x86_64-pc-linux-gnu --verbose --linker-path=/usr/bin/x86_64-pc-linux-gnu-ld.bfd -- -pie --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/13 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib /tmp/openmp_offload-8aa2b3.o -lstdc++ -lm -lomp -lomptarget -rpath /usr/lib/llvm/15/lib64 -L/usr/lib/llvm/15/lib64 -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crtn.o
1.      Running pass 'CallGraph Pass Manager' on module 'ld-temp.o'.
2.      Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@__omp_outlined__'
 #0 0x00007f11f8876dc9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:569:3
 #1 0x00007f11f8876dc9 PrintStackTraceSignalHandler /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:631:23
 #2 0x00007f11f8873d6b std::atomic<CallbackAndCookie::Status>::store(CallbackAndCookie::Status, std::memory_order) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/atomic:279:16
 #3 0x00007f11f8873d6b llvm::sys::RunSignalHandlers() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Signals.cpp:105:21
 #4 0x00007f11f8873d6b SignalHandler /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:397:31
 #5 0x00007f11f72585e0 (/lib64/libc.so.6+0x395e0)
 #6 0x00007f11f72a95ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #7 0x00007f11f7258536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f11f7241875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #9 0x00007f11f82b6d04 llvm::raw_pwrite_stream::~raw_pwrite_stream() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/Support/raw_ostream.h:418:7
#10 0x00007f11f82b6d04 llvm::raw_svector_ostream::~raw_svector_ostream() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/Support/raw_ostream.h:682:3
#11 0x00007f11f82b6d04 llvm::report_fatal_error(llvm::Twine const&, bool) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/ErrorHandling.cpp:115:3
#12 0x00007f11f87600b5 llvm::report_fatal_error(char const*, bool) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/ErrorHandling.cpp:83:21
#13 0x00007f11fb049fe3 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#14 0x00007f11fb049fe3 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#15 0x00007f11fb049fe3 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#16 0x00007f11fb049fe3 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/DebugLoc.h:33:9
#17 0x00007f11fb049fe3 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1091:7
#18 0x00007f11fb049fe3 llvm::SelectionDAG::getUNDEF(llvm::EVT) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAG.h:972:32
#19 0x00007f11fb049fe3 llvm::SITargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Target/AMDGPU/SIISelLowering.cpp:3065:0
#20 0x00007f11f9269443 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:9920:13
#21 0x00007f11f9383398 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::begin() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:249:45
#22 0x00007f11f9383398 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::end() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:251:32
#23 0x00007f11f9383398 llvm::SmallVector<llvm::SDValue, 4u>::~SmallVector() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:1192:24
#24 0x00007f11f9383398 llvm::TargetLowering::CallLoweringInfo::~CallLoweringInfo() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/TargetLowering.h:4020:10
#25 0x00007f11f9383398 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:194:1
#26 0x00007f11f925d519 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#27 0x00007f11f925d519 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#28 0x00007f11f925d519 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#29 0x00007f11f925d519 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/DebugLoc.h:33:9
#30 0x00007f11f925d519 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1091:7
#31 0x00007f11f925d519 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:2749:53
#32 0x00007f11f931ea43 llvm::SelectionDAGISel::FinishBasicBlock() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1680:22
#33 0x00007f11f9321012 std::__uniq_ptr_impl<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::_M_ptr() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:199:67
#34 0x00007f11f9321012 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:470:27
#35 0x00007f11f9321012 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::operator->() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:463:12
#36 0x00007f11f9321012 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1598:13
#37 0x00007f11f9323715 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:465:22
#38 0x00007f11f8d1d703 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/MachineFunctionPass.cpp:85:33
#39 0x00007f11f89feca9 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:1430:40
#40 0x00007f11fa2335f9 RunPassOnSCC /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:179:17
#41 0x00007f11fa2335f9 RunAllPassesOnSCC /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:477:21
#42 0x00007f11fa2335f9 runOnModule /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:542:35
#43 0x00007f11f89ff8c9 runOnModule /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:1552:7
#44 0x00007f11f89ff8c9 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:535:55
#45 0x00007f11fa55dc60 codegen /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTOBackend.cpp:413:3
#46 0x00007f11fa55e362 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#47 0x00007f11fa55e362 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#48 0x00007f11fa55e362 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTOBackend.cpp:510:12
#49 0x00007f11fa552c59 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#50 0x00007f11fa552c59 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#51 0x00007f11fa552c59 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTO.cpp:1143:70
#52 0x00007f11fa55335f std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#53 0x00007f11fa55335f std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#54 0x00007f11fa55335f llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>> (unsigned int, llvm::StringRef)>) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTO.cpp:1038:41
#55 0x000055b133a6c79d std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#56 0x000055b133a6c79d std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#57 0x000055b133a6c79d linkBitcodeFiles /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1026:44
#58 0x000055b133a714cf llvm::Error::getPtr() const /usr/lib/llvm/15/include/llvm/Support/Error.h:274:12
#59 0x000055b133a714cf llvm::Error::operator bool() /usr/lib/llvm/15/include/llvm/Support/Error.h:234:22
#60 0x000055b133a714cf linkAndWrapDeviceFiles /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1307:68
#61 0x000055b133a5b4a7 std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:302:7
#62 0x000055b133a5b4a7 std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::tuple(std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:1351:17
#63 0x000055b133a5b4a7 std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::__uniq_ptr_impl(std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:185:9
#64 0x000055b133a5b4a7 std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>::__uniq_ptr_data(std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:242:7
#65 0x000055b133a5b4a7 std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::unique_ptr(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:366:7
#66 0x000055b133a5b4a7 llvm::Expected<llvm::SmallVector<llvm::StringRef, 3u>>::takeError() /usr/lib/llvm/15/include/llvm/Support/Error.h:601:77
#67 0x000055b133a5b4a7 main /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1540:39
#68 0x00007f11f7242d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#69 0x00007f11f7242e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#70 0x00007f11f7242e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#71 0x000055b133a5bfa5 (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xffa5)
 #0 0x00007f11f8876dc9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:569:3
 #1 0x00007f11f8876dc9 PrintStackTraceSignalHandler /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:631:23
 #2 0x00007f11f8873d6b std::atomic<CallbackAndCookie::Status>::store(CallbackAndCookie::Status, std::memory_order) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/atomic:279:16
 #3 0x00007f11f8873d6b llvm::sys::RunSignalHandlers() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Signals.cpp:105:21
 #4 0x00007f11f8873d6b SignalHandler /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/Unix/Signals.inc:397:31
 #5 0x00007f11f72585e0 (/lib64/libc.so.6+0x395e0)
 #6 0x00007f11f72a95ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #7 0x00007f11f7258536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f11f7241875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #9 0x00007f11f82b6d04 llvm::raw_pwrite_stream::~raw_pwrite_stream() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/Support/raw_ostream.h:418:7
#10 0x00007f11f82b6d04 llvm::raw_svector_ostream::~raw_svector_ostream() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/Support/raw_ostream.h:682:3
#11 0x00007f11f82b6d04 llvm::report_fatal_error(llvm::Twine const&, bool) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/ErrorHandling.cpp:115:3
#12 0x00007f11f87600b5 llvm::report_fatal_error(char const*, bool) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Support/ErrorHandling.cpp:83:21
#13 0x00007f11fb049fe3 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#14 0x00007f11fb049fe3 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#15 0x00007f11fb049fe3 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#16 0x00007f11fb049fe3 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/DebugLoc.h:33:9
#17 0x00007f11fb049fe3 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1091:7
#18 0x00007f11fb049fe3 llvm::SelectionDAG::getUNDEF(llvm::EVT) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAG.h:972:32
#19 0x00007f11fb049fe3 llvm::SITargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Target/AMDGPU/SIISelLowering.cpp:3065:0
#20 0x00007f11f9269443 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:9920:13
#21 0x00007f11f9383398 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::begin() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:249:45
#22 0x00007f11f9383398 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::end() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:251:32
#23 0x00007f11f9383398 llvm::SmallVector<llvm::SDValue, 4u>::~SmallVector() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/ADT/SmallVector.h:1192:24
#24 0x00007f11f9383398 llvm::TargetLowering::CallLoweringInfo::~CallLoweringInfo() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/TargetLowering.h:4020:10
#25 0x00007f11f9383398 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:194:1
#26 0x00007f11f925d519 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#27 0x00007f11f925d519 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#28 0x00007f11f925d519 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#29 0x00007f11f925d519 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/IR/DebugLoc.h:33:9
#30 0x00007f11f925d519 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1091:7
#31 0x00007f11f925d519 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:2749:53
#32 0x00007f11f931ea43 llvm::SelectionDAGISel::FinishBasicBlock() /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1680:22
#33 0x00007f11f9321012 std::__uniq_ptr_impl<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::_M_ptr() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:199:67
#34 0x00007f11f9321012 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:470:27
#35 0x00007f11f9321012 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::operator->() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:463:12
#36 0x00007f11f9321012 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1598:13
#37 0x00007f11f9323715 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:465:22
#38 0x00007f11f8d1d703 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/CodeGen/MachineFunctionPass.cpp:85:33
#39 0x00007f11f89feca9 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:1430:40
#40 0x00007f11fa2335f9 RunPassOnSCC /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:179:17
#41 0x00007f11fa2335f9 RunAllPassesOnSCC /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:477:21
#42 0x00007f11fa2335f9 runOnModule /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/Analysis/CallGraphSCCPass.cpp:542:35
#43 0x00007f11f89ff8c9 runOnModule /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:1552:7
#44 0x00007f11f89ff8c9 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/IR/LegacyPassManager.cpp:535:55
#45 0x00007f11fa55dc60 codegen /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTOBackend.cpp:413:3
#46 0x00007f11fa55e362 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#47 0x00007f11fa55e362 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#48 0x00007f11fa55e362 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTOBackend.cpp:510:12
#49 0x00007f11fa552c59 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#50 0x00007f11fa552c59 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#51 0x00007f11fa552c59 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTO.cpp:1143:70
#52 0x00007f11fa55335f std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#53 0x00007f11fa55335f std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#54 0x00007f11fa55335f llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>> (unsigned int, llvm::StringRef)>) /usr/src/debug/sys-devel/llvm-15.0.7/llvm/lib/LTO/LTO.cpp:1038:41
#55 0x000055b133a6c79d std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#56 0x000055b133a6c79d std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#57 0x000055b133a6c79d linkBitcodeFiles /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1026:44
#58 0x000055b133a714cf llvm::Error::getPtr() const /usr/lib/llvm/15/include/llvm/Support/Error.h:274:12
#59 0x000055b133a714cf llvm::Error::operator bool() /usr/lib/llvm/15/include/llvm/Support/Error.h:234:22
#60 0x000055b133a714cf linkAndWrapDeviceFiles /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1307:68
#61 0x000055b133a5b4a7 std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:302:7
#62 0x000055b133a5b4a7 std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::tuple(std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:1351:17
#63 0x000055b133a5b4a7 std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::__uniq_ptr_impl(std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:185:9
#64 0x000055b133a5b4a7 std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>::__uniq_ptr_data(std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:242:7
#65 0x000055b133a5b4a7 std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::unique_ptr(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:366:7
#66 0x000055b133a5b4a7 llvm::Expected<llvm::SmallVector<llvm::StringRef, 3u>>::takeError() /usr/lib/llvm/15/include/llvm/Support/Error.h:601:77
#67 0x000055b133a5b4a7 main /usr/src/debug/sys-devel/clang-15.0.7-r1/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1540:39
#68 0x00007f11f7242d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#69 0x00007f11f7242e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#70 0x00007f11f7242e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#71 0x000055b133a5bfa5 (/usr/lib/llvm/15/bin/clang-linker-wrapper+0xffa5)
clang-15: error: unable to execute command: Aborted
clang-15: error: linker command failed due to signal (use -v to see invocation)

The sample code somes from a public AMD presentation slide and can be directly downloaded here => https://bugs.gentoo.org/attachment.cgi?id=859874

EDIT: Rebuilt Clang with debugging symbol to have a more verbose crash trace.

@llvmbot
Copy link
Collaborator

llvmbot commented Apr 11, 2023

@llvm/issue-subscribers-backend-amdgpu

@admnd admnd changed the title [AMDGPU][OpenMP] LLVM crashes with "unsupported libcall legalization" [AMDGPU][OpenMP] LLVM{15,16} crashes with "unsupported libcall legalization" Apr 12, 2023
@admnd
Copy link
Author

admnd commented Apr 12, 2023

Tested with LLVM 16... Same issue :(

$ /usr/lib/llvm/16/bin/clang++ -v --rocm-device-lib-path=/usr/lib/amdgcn/bitcode --libomptarget-amdgpu-bc-path="/usr/lib64" -fno-lto -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa --offload-arch=gfx1031 -x c openmp_offload.c 
clang version 16.0.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/16/bin
Configuration file: /etc/clang/clang++.cfg
System configuration file directory: /etc/clang
Selected GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/13
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
clang-16: warning: argument unused during compilation: '--libomptarget-amdgpu-bc-path=/usr/lib64' [-Wunused-command-line-argument]
 "/usr/lib/llvm/16/bin/clang-16" -cc1 -triple x86_64-pc-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/llvm/16/bin/../../../../lib/clang/16 -include /usr/include/gentoo/fortify.h -internal-isystem /usr/lib/llvm/16/bin/../../../../lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/lib/llvm/16/bin/../../../../lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/tmp -ferror-limit 19 -fopenmp -stack-protector 2 -fstack-clash-protection -fgnuc-version=4.2.1 -fcolor-diagnostics -disable-llvm-passes -fopenmp-targets=amdgcn-amd-amdhsa -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/openmp_offload-4c7079.bc -x c openmp_offload.c
clang -cc1 version 16.0.1 based upon LLVM 16.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/lib/llvm/16/bin/../../../../lib/clang/16/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/llvm/16/bin/../../../../lib/clang/16/include
 /usr/include
End of search list.
 "/usr/lib/llvm/16/bin/clang-16" -cc1 -triple amdgcn-amd-amdhsa -aux-triple x86_64-pc-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu gfx1031 -fcuda-is-device -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_daz_opt_off.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_unsafe_math_off.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_finite_only_off.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_wavefrontsize64_off.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_isa_version_1031.bc -mlink-builtin-bitcode /usr/lib/amdgcn/bitcode/oclc_abi_version_400.bc -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm/16/bin/../../../../lib/clang/16 -internal-isystem /usr/lib/llvm/16/bin/../../../../lib/clang/16/include/openmp_wrappers -include __clang_openmp_device_functions.h -include /usr/include/gentoo/fortify.h -internal-isystem /usr/lib/llvm/16/bin/../../../../lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /usr/lib/llvm/16/bin/../../../../lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/tmp -ferror-limit 19 -fvisibility=protected -fopenmp -stack-protector 2 -fgnuc-version=4.2.1 -fcolor-diagnostics -fopenmp-is-device -fopenmp-host-ir-file-path /tmp/openmp_offload-4c7079.bc -faddrsig -o /tmp/openmp_offload-95f937/openmp_offload-gfx1031.bc -x c openmp_offload.c
clang -cc1 version 16.0.1 based upon LLVM 16.0.1 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory "/usr/local/include"
ignoring duplicate directory "/usr/lib/llvm/16/bin/../../../../lib/clang/16/include"
ignoring duplicate directory "/usr/include"
ignoring duplicate directory "/usr/lib/llvm/16/bin/../../../../lib/clang/16/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/llvm/16/bin/../../../../lib/clang/16/include/openmp_wrappers
 /usr/lib/llvm/16/bin/../../../../lib/clang/16/include
 /usr/include
End of search list.
 "/usr/lib/llvm/16/bin/clang-offload-packager" -o /tmp/openmp_offload-3deba1.out --image=file=/tmp/openmp_offload-95f937/openmp_offload-gfx1031.bc,triple=amdgcn-amd-amdhsa,arch=gfx1031,kind=openmp
 "/usr/lib/llvm/16/bin/clang-16" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name openmp_offload.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/llvm/16/bin/../../../../lib/clang/16 -fdebug-compilation-dir=/tmp -ferror-limit 19 -fopenmp -stack-protector 2 -fstack-clash-protection -fgnuc-version=4.2.1 -fcolor-diagnostics -fembed-offload-object=/tmp/openmp_offload-3deba1.out -fopenmp-targets=amdgcn-amd-amdhsa -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/openmp_offload-c5aed5.o -x ir /tmp/openmp_offload-4c7079.bc
clang -cc1 version 16.0.1 based upon LLVM 16.0.1 default target x86_64-pc-linux-gnu
 "/usr/lib/llvm/16/bin/clang-linker-wrapper" --host-triple=x86_64-pc-linux-gnu --wrapper-verbose --linker-path=/usr/bin/x86_64-pc-linux-gnu-ld.bfd -- -pie --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/13 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib /tmp/openmp_offload-c5aed5.o -lstdc++ -lm -lomp -lomptarget -lomptarget.devicertl -rpath /usr/lib/llvm/16/lib64 -L/usr/lib/llvm/16/lib64 -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crtn.o
LLVM ERROR: unsupported libcall legalization
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm/16/bin/clang-linker-wrapper --host-triple=x86_64-pc-linux-gnu --wrapper-verbose --linker-path=/usr/bin/x86_64-pc-linux-gnu-ld.bfd -- -pie --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/13 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/lib -L/lib -L/usr/lib /tmp/openmp_offload-c5aed5.o -lstdc++ -lm -lomp -lomptarget -lomptarget.devicertl -rpath /usr/lib/llvm/16/lib64 -L/usr/lib/llvm/16/lib64 -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../lib64/crtn.o
1.      Running pass 'CallGraph Pass Manager' on module 'ld-temp.o'.
2.      Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@__omp_outlined__'
 #0 0x00007fe33387d8a1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:567:22
 #1 0x00007fe33387aa0b std::atomic<CallbackAndCookie::Status>::store(CallbackAndCookie::Status, std::memory_order) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/atomic:279:16
 #2 0x00007fe33387aa0b llvm::sys::RunSignalHandlers() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Signals.cpp:106:21
 #3 0x00007fe33387aa0b SignalHandler /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:402:31
 #4 0x00007fe33217f5e0 (/lib64/libc.so.6+0x395e0)
 #5 0x00007fe3321d05ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #6 0x00007fe33217f536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007fe332168875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #8 0x00007fe333249e52 llvm::raw_pwrite_stream::~raw_pwrite_stream() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/raw_ostream.h:428:7
 #9 0x00007fe333249e52 llvm::raw_svector_ostream::~raw_svector_ostream() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/raw_ostream.h:692:3
#10 0x00007fe333249e52 llvm::report_fatal_error(llvm::Twine const&, bool) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/ErrorHandling.cpp:115:3
#11 0x00007fe333777725 llvm::report_fatal_error(char const*, bool) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/ErrorHandling.cpp:83:21
#12 0x00007fe3362b0d1a llvm::SITargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Target/AMDGPU/SIISelLowering.cpp:3118:0
#13 0x00007fe33430daf9 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:10168:13
#14 0x00007fe334434e84 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::begin() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:270:45
#15 0x00007fe334434e84 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::end() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:272:32
#16 0x00007fe334434e84 llvm::SmallVector<llvm::SDValue, 4u>::~SmallVector() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:1206:24
#17 0x00007fe334434e84 llvm::TargetLowering::CallLoweringInfo::~CallLoweringInfo() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/CodeGen/TargetLowering.h:4170:10
#18 0x00007fe334434e84 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:195:1
#19 0x00007fe334301779 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#20 0x00007fe334301779 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#21 0x00007fe334301779 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#22 0x00007fe334301779 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/DebugLoc.h:33:9
#23 0x00007fe334301779 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1106:7
#24 0x00007fe334301779 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:2807:61
#25 0x00007fe3343c8368 llvm::SelectionDAGISel::FinishBasicBlock() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1727:22
#26 0x00007fe3343ca9d2 std::__uniq_ptr_impl<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::_M_ptr() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:199:67
#27 0x00007fe3343ca9d2 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:470:27
#28 0x00007fe3343ca9d2 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::operator->() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:463:12
#29 0x00007fe3343ca9d2 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1645:13
#30 0x00007fe3343cd821 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:481:22
#31 0x00007fe333d7a891 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:33
#32 0x00007fe333a17a69 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:1430:40
#33 0x00007fe3353445d9 RunPassOnSCC /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:179:17
#34 0x00007fe3353445d9 RunAllPassesOnSCC /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:469:21
#35 0x00007fe3353445d9 runOnModule /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:534:35
#36 0x00007fe333a18689 runOnModule /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:1552:7
#37 0x00007fe333a18689 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:535:55
#38 0x00007fe33569db30 codegen /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTOBackend.cpp:415:3
#39 0x00007fe33569e242 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#40 0x00007fe33569e242 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#41 0x00007fe33569e242 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTOBackend.cpp:512:12
#42 0x00007fe335692329 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#43 0x00007fe335692329 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#44 0x00007fe335692329 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTO.cpp:1179:70
#45 0x00007fe335692a12 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#46 0x00007fe335692a12 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#47 0x00007fe335692a12 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>> (unsigned int, llvm::StringRef, llvm::Twine const&)>) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTO.cpp:1074:41
#48 0x000055bbf25df483 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#49 0x000055bbf25df483 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#50 0x000055bbf25df483 (anonymous namespace)::linkBitcodeFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::SmallVectorImpl<llvm::StringRef>&, llvm::opt::ArgList const&) (.constprop.0) /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:740:44
#51 0x000055bbf25e29f6 llvm::Error::getPtr() const /usr/lib/llvm/16/include/llvm/Support/Error.h:275:12
#52 0x000055bbf25e29f6 llvm::Error::operator bool() /usr/lib/llvm/16/include/llvm/Support/Error.h:235:22
#53 0x000055bbf25e29f6 llvm::Error (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::opt::InputArgList const&, char**, int)::'lambda'(auto&)::operator()<llvm::SmallVector<llvm::object::OffloadFile, 3u>>(auto&) const /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1025:5
#54 0x000055bbf25e6d52 parallelTransformReduce<llvm::SmallVector<llvm::object::OffloadFile>*, LLVMOpaqueError*, llvm::parallelForEachError<SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> >(SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)>)::<lambda(LLVMErrorRef, LLVMErrorRef)>, llvm::parallelForEachError<SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> >(SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)>)::<lambda(auto:33&&)> > /usr/lib/llvm/16/include/llvm/Support/Parallel.h:249:18
#55 0x000055bbf25e6d52 parallelForEachError<llvm::SmallVector<llvm::SmallVector<llvm::object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> > /usr/lib/llvm/16/include/llvm/Support/Parallel.h:287:47
#56 0x000055bbf25e6d52 (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::opt::InputArgList const&, char**, int) /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1069:4
#57 0x000055bbf25cedb3 std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:302:7
#58 0x000055bbf25cedb3 std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::tuple(std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:1351:17
#59 0x000055bbf25cedb3 std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::__uniq_ptr_impl(std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:185:9
#60 0x000055bbf25cedb3 std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>::__uniq_ptr_data(std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:242:7
#61 0x000055bbf25cedb3 std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::unique_ptr(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:366:7
#62 0x000055bbf25cedb3 llvm::Expected<llvm::SmallVector<llvm::StringRef, 3u>>::takeError() /usr/lib/llvm/16/include/llvm/Support/Error.h:601:77
#63 0x000055bbf25cedb3 main /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1422:39
#64 0x00007fe332169d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#65 0x00007fe332169e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#66 0x00007fe332169e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#67 0x000055bbf25cf445 _start (/usr/lib/llvm/16/bin/clang-linker-wrapper+0xe445)
 #0 0x00007fe33387d8a1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:567:22
 #1 0x00007fe33387aa0b std::atomic<CallbackAndCookie::Status>::store(CallbackAndCookie::Status, std::memory_order) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/atomic:279:16
 #2 0x00007fe33387aa0b llvm::sys::RunSignalHandlers() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Signals.cpp:106:21
 #3 0x00007fe33387aa0b SignalHandler /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/Unix/Signals.inc:402:31
 #4 0x00007fe33217f5e0 (/lib64/libc.so.6+0x395e0)
 #5 0x00007fe3321d05ac __pthread_kill_implementation /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/nptl/pthread_kill.c:44:76
 #6 0x00007fe33217f536 raise /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007fe332168875 abort /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/stdlib/abort.c:81:7
 #8 0x00007fe333249e52 llvm::raw_pwrite_stream::~raw_pwrite_stream() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/raw_ostream.h:428:7
 #9 0x00007fe333249e52 llvm::raw_svector_ostream::~raw_svector_ostream() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/Support/raw_ostream.h:692:3
#10 0x00007fe333249e52 llvm::report_fatal_error(llvm::Twine const&, bool) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/ErrorHandling.cpp:115:3
#11 0x00007fe333777725 llvm::report_fatal_error(char const*, bool) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Support/ErrorHandling.cpp:83:21
#12 0x00007fe3362b0d1a llvm::SITargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Target/AMDGPU/SIISelLowering.cpp:3118:0
#13 0x00007fe33430daf9 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:10168:13
#14 0x00007fe334434e84 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::begin() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:270:45
#15 0x00007fe334434e84 llvm::SmallVectorTemplateCommon<llvm::SDValue, void>::end() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:272:32
#16 0x00007fe334434e84 llvm::SmallVector<llvm::SDValue, 4u>::~SmallVector() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/ADT/SmallVector.h:1206:24
#17 0x00007fe334434e84 llvm::TargetLowering::CallLoweringInfo::~CallLoweringInfo() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/CodeGen/TargetLowering.h:4170:10
#18 0x00007fe334434e84 llvm::TargetLowering::makeLibCall(llvm::SelectionDAG&, llvm::RTLIB::Libcall, llvm::EVT, llvm::ArrayRef<llvm::SDValue>, llvm::TargetLowering::MakeLibCallOptions, llvm::SDLoc const&, llvm::SDValue) const /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:195:1
#19 0x00007fe334301779 llvm::TrackingMDRef::untrack() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:89:9
#20 0x00007fe334301779 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:55:29
#21 0x00007fe334301779 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/TrackingMDRef.h:106:26
#22 0x00007fe334301779 llvm::DebugLoc::~DebugLoc() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/IR/DebugLoc.h:33:9
#23 0x00007fe334301779 llvm::SDLoc::~SDLoc() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1106:7
#24 0x00007fe334301779 llvm::SelectionDAGBuilder::visitSPDescriptorFailure(llvm::StackProtectorDescriptor&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:2807:61
#25 0x00007fe3343c8368 llvm::SelectionDAGISel::FinishBasicBlock() /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1727:22
#26 0x00007fe3343ca9d2 std::__uniq_ptr_impl<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::_M_ptr() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:199:67
#27 0x00007fe3343ca9d2 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::get() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:470:27
#28 0x00007fe3343ca9d2 std::unique_ptr<llvm::FunctionLoweringInfo, std::default_delete<llvm::FunctionLoweringInfo>>::operator->() const /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:463:12
#29 0x00007fe3343ca9d2 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1645:13
#30 0x00007fe3343cd821 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:481:22
#31 0x00007fe333d7a891 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:33
#32 0x00007fe333a17a69 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:1430:40
#33 0x00007fe3353445d9 RunPassOnSCC /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:179:17
#34 0x00007fe3353445d9 RunAllPassesOnSCC /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:469:21
#35 0x00007fe3353445d9 runOnModule /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/Analysis/CallGraphSCCPass.cpp:534:35
#36 0x00007fe333a18689 runOnModule /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:1552:7
#37 0x00007fe333a18689 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/IR/LegacyPassManager.cpp:535:55
#38 0x00007fe33569db30 codegen /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTOBackend.cpp:415:3
#39 0x00007fe33569e242 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#40 0x00007fe33569e242 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#41 0x00007fe33569e242 llvm::lto::backend(llvm::lto::Config const&, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTOBackend.cpp:512:12
#42 0x00007fe335692329 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#43 0x00007fe335692329 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#44 0x00007fe335692329 llvm::lto::LTO::runRegularLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTO.cpp:1179:70
#45 0x00007fe335692a12 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#46 0x00007fe335692a12 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#47 0x00007fe335692a12 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>> (unsigned int, llvm::StringRef, llvm::Twine const&)>) /usr/src/debug/sys-devel/llvm-16.0.1/llvm/lib/LTO/LTO.cpp:1074:41
#48 0x000055bbf25df483 std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:243:11
#49 0x000055bbf25df483 std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>::~function() /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/std_function.h:334:11
#50 0x000055bbf25df483 (anonymous namespace)::linkBitcodeFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::SmallVectorImpl<llvm::StringRef>&, llvm::opt::ArgList const&) (.constprop.0) /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:740:44
#51 0x000055bbf25e29f6 llvm::Error::getPtr() const /usr/lib/llvm/16/include/llvm/Support/Error.h:275:12
#52 0x000055bbf25e29f6 llvm::Error::operator bool() /usr/lib/llvm/16/include/llvm/Support/Error.h:235:22
#53 0x000055bbf25e29f6 llvm::Error (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::opt::InputArgList const&, char**, int)::'lambda'(auto&)::operator()<llvm::SmallVector<llvm::object::OffloadFile, 3u>>(auto&) const /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1025:5
#54 0x000055bbf25e6d52 parallelTransformReduce<llvm::SmallVector<llvm::object::OffloadFile>*, LLVMOpaqueError*, llvm::parallelForEachError<SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> >(SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)>)::<lambda(LLVMErrorRef, LLVMErrorRef)>, llvm::parallelForEachError<SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> >(SmallVector<SmallVector<object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)>)::<lambda(auto:33&&)> > /usr/lib/llvm/16/include/llvm/Support/Parallel.h:249:18
#55 0x000055bbf25e6d52 parallelForEachError<llvm::SmallVector<llvm::SmallVector<llvm::object::OffloadFile> >&, (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, const llvm::opt::InputArgList&, char**, int)::<lambda(auto:34&)> > /usr/lib/llvm/16/include/llvm/Support/Parallel.h:287:47
#56 0x000055bbf25e6d52 (anonymous namespace)::linkAndWrapDeviceFiles(llvm::SmallVectorImpl<llvm::object::OffloadFile>&, llvm::opt::InputArgList const&, char**, int) /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1069:4
#57 0x000055bbf25cedb3 std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:302:7
#58 0x000055bbf25cedb3 std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>::tuple(std::tuple<llvm::ErrorInfoBase*, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/tuple:1351:17
#59 0x000055bbf25cedb3 std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::__uniq_ptr_impl(std::__uniq_ptr_impl<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:185:9
#60 0x000055bbf25cedb3 std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>::__uniq_ptr_data(std::__uniq_ptr_data<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>, true, true>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:242:7
#61 0x000055bbf25cedb3 std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>::unique_ptr(std::unique_ptr<llvm::ErrorInfoBase, std::default_delete<llvm::ErrorInfoBase>>&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:366:7
#62 0x000055bbf25cedb3 llvm::Expected<llvm::SmallVector<llvm::StringRef, 3u>>::takeError() /usr/lib/llvm/16/include/llvm/Support/Error.h:601:77
#63 0x000055bbf25cedb3 main /var/tmp/portage/sys-devel/clang-16.0.1/work/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp:1422:39
#64 0x00007fe332169d4e __libc_start_call_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#65 0x00007fe332169e09 call_init /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:128:20
#66 0x00007fe332169e09 __libc_start_main /usr/src/debug/sys-libs/glibc-2.37-r1/glibc-2.37/csu/../csu/libc-start.c:347:5
#67 0x000055bbf25cf445 _start (/usr/lib/llvm/16/bin/clang-linker-wrapper+0xe445)
clang-16: error: unable to execute command: Aborted
clang-16: error: linker command failed due to signal (use -v to see invocation)

@admnd admnd changed the title [AMDGPU][OpenMP] LLVM{15,16} crashes with "unsupported libcall legalization" [AMDGPU][OpenMP] LLVM{15,16} crashes with "unsupported libcall legalization" when compiling a program with OpenMP offload to the GPU Apr 12, 2023
@arsenm arsenm added the openmp label Aug 9, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Aug 9, 2023

@llvm/issue-subscribers-openmp

@arsenm
Copy link
Contributor

arsenm commented Aug 9, 2023

I can't reproduce this. Looking through the trace this looks like it was trying to use stack protectors on the GPU, which isn't really implemented or supported. It's also not the default behavior. I wouldn't expect -fstack-protector on your general compile command to be implied for the device compile. I do see the ssp attribute added by it in the offload IR, but it seems to not do anything? Not sure exactly how all the stack protector machinery is supposed to work.

There seems to be a lot of confusing stuff going on in StackProtector. It seems to only do anything depending on very specific properties of the allocas that happen to reach the backend.

The pass also will not tolerate non-0 address space allocas, seems like it's going to be a fair bit of work to do anything with this. I think the driver should just not pass on the SSP request to the device compile

@jhuber6
Copy link
Contributor

jhuber6 commented Aug 9, 2023

I don't think the 16 release can be patched anymore. Can you try with a build off of the main branch? I also cannot reproduce.

@littlewu2508
Copy link

littlewu2508 commented Aug 9, 2023 via email

@jhuber6
Copy link
Contributor

jhuber6 commented Aug 9, 2023

I can't reproduce this. Looking through the trace this looks like it was trying to use stack protectors on the GPU, which isn't really implemented or supported. It's also not the default behavior. I wouldn't expect -fstack-protector on your general compile command to be implied for the device compile. I do see the ssp attribute added by it in the offload IR, but it seems to not do anything? Not sure exactly how all the stack protector machinery is supposed to work
Thank you for reminding the -fstack-protector. Gentoo put -fstack-protector-strong into the default compiler option. With -fno-stack-protector the error is gone.

So, is it safe to close this issue? You can still get the same host behavior if you use -Xarch-device -fno-stack-protector-strong or just -Xarch_host -fstack-protector-strong.

@arsenm
Copy link
Contributor

arsenm commented Aug 9, 2023

So, is it safe to close this issue? You can still get the same host behavior if you use -Xarch-device -fno-stack-protector-strong or just -Xarch_host -fstack-protector-strong.

What's the general policy for random compiler flags applying to host and device? I wouldn't expect the driver to pass along an unsupported option to the offload compile

@jhuber6
Copy link
Contributor

jhuber6 commented Aug 9, 2023

So, is it safe to close this issue? You can still get the same host behavior if you use -Xarch-device -fno-stack-protector-strong or just -Xarch_host -fstack-protector-strong.

What's the general policy for random compiler flags applying to host and device? I wouldn't expect the driver to pass along an unsupported option to the offload compile

I don't think there's a policy, we pretty much just pass everything to both ends and rely on the user to turn off the ones that don't work. Ideally we make things as similar as possible, but for example, doing -fsanitize=address doesn't work but -Xarch_host -fsanitize=address does. We could maybe have a list of "things that are definition not supported for OpenMP offloading so don't forward them" but that would be hard to maintain and could go against the user's wishes if they truly, indeed wanted to compile for something unsupported by the runtime.

@admnd
Copy link
Author

admnd commented Aug 9, 2023

Thank you for reminding the -fstack-protector. Gentoo put -fstack-protector-strong into the default compiler option. With -fno-stack-protector the error is gone.

Good catch indeed, I had never though about it. This might have saved you guys a precious time. I apologize, but at least now it is documented.

Until the stack-protector issue will cease to annoy us, it would be very kind to add the precision in a Gentoo knowledge base.
I will revisit the issue with all information put there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants