-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Open
Labels
Description
Was experimenting with contrived C23 BitInt code when I stumbled upon a code+compiler-options combination that failed to compile with a compiler crash. I used llvm/clang-20.1.8 as it's installed on my host, but the same code block timed out during compilation on Godbolt with clang trunk, so I'm guessing this can still happen.
Note: Using gcc v15.2.1, with same code and compiler options, this builds fine, in under a second.
In lieu of attachments, here are the relevant gists:
And the copy-pasted backtrace (note the compiler had run for about 6 minutes prior to crash-- on a modern 2-socket Xeon server with about 384GB of RAM, no contention):
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang -v -std=c23 -march=x86-64-v4 -mtune=skylake-avx512 -Og -fpie -pipe -c -o i_dare_you_to_compile_me.o i_dare_you_to_compile_me.c
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'i_dare_you_to_compile_me.c'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function '@main'
#0 0x00007f6d3ccea01d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/Unix/Signals.inc:799:22
#1 0x00007f6d3cce7b77 llvm::sys::RunSignalHandlers() /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/Signals.cpp:105:20
#2 0x00007f6d3cce7b77 llvm::sys::CleanupOnSignal(unsigned long) /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/Unix/Signals.inc:369:31
#3 0x00007f6d3cbcbb29 HandleCrash /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/CrashRecoveryContext.cpp:73:5
#4 0x00007f6d3cbcbb29 CrashRecoverySignalHandler /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/CrashRecoveryContext.cpp:390:62
#5 0x00007f6d3bc3e540 (/usr/lib/libc.so.6+0x3e540)
#6 0x00007f6d3d38c44f llvm::MachineRegisterInfo::addRegOperandToUseList(llvm::MachineOperand*) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/MachineRegisterInfo.cpp:276:25
#7 0x00007f6d3d2dd010 llvm::MachineInstr::addOperand(llvm::MachineFunction&, llvm::MachineOperand const&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/MachineInstr.cpp:274:34
#8 0x00007f6d3d7eecb5 llvm::TrackingMDRef::untrack() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/IR/TrackingMDRef.h:89:9
#9 0x00007f6d3d7eecb5 llvm::TrackingMDRef::~TrackingMDRef() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/IR/TrackingMDRef.h:55:29
#10 0x00007f6d3d7eecb5 llvm::TypedTrackingMDRef<llvm::MDNode>::~TypedTrackingMDRef() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/IR/TrackingMDRef.h:106:26
#11 0x00007f6d3d7eecb5 llvm::DebugLoc::~DebugLoc() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/IR/DebugLoc.h:33:9
#12 0x00007f6d3d7eecb5 llvm::MIMetadata::~MIMetadata() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/CodeGen/MachineInstrBuilder.h:348:7
#13 0x00007f6d3d7eecb5 llvm::InstrEmitter::AddRegisterOperand(llvm::MachineInstrBuilder&, llvm::SDValue, unsigned int, llvm::MCInstrDesc const*, llvm::SmallDenseMap<llvm::SDValue, llvm::Register, 16u,
llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::DenseMapPair<llvm::SDValue, llvm::Register>>&, bool, bool, bool) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:354
:50
#14 0x00007f6d3d7f6c60 llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool, llvm::SmallDenseMap<llvm::SDValue, llvm::Register, 16u, llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::Dens
eMapPair<llvm::SDValue, llvm::Register>>&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:1120:32
#15 0x00007f6d3d90a195 llvm::InstrEmitter::EmitNode(llvm::SDNode*, bool, bool, llvm::SmallDenseMap<llvm::SDValue, llvm::Register, 16u, llvm::DenseMapInfo<llvm::SDValue, void>, llvm::detail::DenseMapPai
r<llvm::SDValue, llvm::Register>>&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/InstrEmitter.h:145:22
#16 0x00007f6d3d90a195 operator() /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:874:21
#17 0x00007f6d3d911c10 llvm::ScheduleDAGSDNodes::EmitSchedule(llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/ScheduleDAGSDNod
es.cpp:965:17
#18 0x00007f6d3da0fc35 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1153:29
#19 0x00007f6d3da12f54 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1904:33
#20 0x00007f6d3da147a4 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:616:22
#21 0x00007f6d3da0270b llvm::OptLevelChanger::~OptLevelChanger() /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:269:7
#22 0x00007f6d3da0270b llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:376:1
#23 0x00007f6d3da0270b llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:347:6
#24 0x00007f6d3d2d28ff llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/CodeGen/MachineFunctionPass.cpp:94:33
#25 0x00007f6d3ced0fa3 llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/IR/LegacyPassManager.cpp:1406:40
#26 0x00007f6d3ced1183 llvm::ilist_detail::node_base_prevnext<llvm::ilist_node_base<false, void>, false>::getNext() const /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/ADT/ilist_node_base.h:28:38
#27 0x00007f6d3ced1183 llvm::ilist_node_impl<llvm::ilist_detail::node_options<llvm::Function, false, false, void, false, void>>::getNext() /usr/src/debug/llvm/llvm-20.1.8.src/include/llvm/ADT/ilist_nod
e.h:117:66
#28 0x00007f6d3ced1183 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, false, false, void, false, void>, false, false>::operator++() /usr/src/debug/llvm/llvm-20.1.8.src/include/ll
vm/ADT/ilist_iterator.h:187:25
#29 0x00007f6d3ced1183 llvm::FPPassManager::runOnModule(llvm::Module&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/IR/LegacyPassManager.cpp:1451:22
#30 0x00007f6d3ced0382 runOnModule /usr/src/debug/llvm/llvm-20.1.8.src/lib/IR/LegacyPassManager.cpp:1521:38
#31 0x00007f6d3ced0382 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/src/debug/llvm/llvm-20.1.8.src/lib/IR/LegacyPassManager.cpp:539:55
#32 0x00007f6d476fd162 RunCodegenPipeline /usr/src/debug/clang/clang-20.1.8.src/lib/CodeGen/BackendUtil.cpp:1229:9
#33 0x00007f6d476fd162 emitAssembly /usr/src/debug/clang/clang-20.1.8.src/lib/CodeGen/BackendUtil.cpp:1252:21
#34 0x00007f6d476fd162 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>,
std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) /usr/src/debug/clang/clang-20.1.8.src/lib/CodeGen/BackendUtil.cpp:1416:25
#35 0x00007f6d47b4793d llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::release() /usr/include/llvm/ADT/IntrusiveRefCntPtr.h:232:9
#36 0x00007f6d47b4793d llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>::~IntrusiveRefCntPtr() /usr/include/llvm/ADT/IntrusiveRefCntPtr.h:196:34
#37 0x00007f6d47b4793d clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /usr/src/debug/clang/clang-20.1.8.src/lib/CodeGen/CodeGenAction.cpp:315:20
#38 0x00007f6d46307516 __gnu_cxx::__normal_iterator<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>*, std::vector<std::unique_ptr<clang:
:TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>, std::allocator<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInsta
ntiationCallback>>>>>::__normal_iterator(std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>* const&) /usr/include/c++/15.1.1/bits/stl_itera
tor.h:1059:9
#39 0x00007f6d46307516 std::vector<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>, std::allocator<std::unique_ptr<clang::TemplateInstan
tiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>>>::begin() /usr/include/c++/15.1.1/bits/stl_vector.h:999:16
#40 0x00007f6d46307516 void clang::finalize<std::vector<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>, std::allocator<std::unique_ptr<
clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>>>>(std::vector<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::Template
InstantiationCallback>>, std::allocator<std::unique_ptr<clang::TemplateInstantiationCallback, std::default_delete<clang::TemplateInstantiationCallback>>>>&, clang::Sema const&) /usr/src/debug/clang/cla
ng-20.1.8.src/include/clang/Sema/TemplateInstCallback.h:54:3
#41 0x00007f6d46307516 clang::ParseAST(clang::Sema&, bool, bool) /usr/src/debug/clang/clang-20.1.8.src/lib/Parse/ParseAST.cpp:191:11
#42 0x00007f6d4849f23c clang::CompilerInstance::shouldBuildGlobalModuleIndex() const /usr/src/debug/clang/clang-20.1.8.src/lib/Frontend/CompilerInstance.cpp:88:58
#43 0x00007f6d4849f23c clang::FrontendAction::Execute() /usr/src/debug/clang/clang-20.1.8.src/lib/Frontend/FrontendAction.cpp:1076:38
#44 0x00007f6d48425c57 llvm::Error::getPtr() const /usr/include/llvm/Support/Error.h:282:12
#45 0x00007f6d48425c57 llvm::Error::operator bool() /usr/include/llvm/Support/Error.h:242:22
#46 0x00007f6d48425c57 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/src/debug/clang/clang-20.1.8.src/lib/Frontend/CompilerInstance.cpp:1056:42
#47 0x00007f6d4850742f std::__shared_ptr<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2>::get() const /usr/include/c++/15.1.1/bits/shared_ptr_base.h:1673:16
#48 0x00007f6d4850742f std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/include/c++/15.1.1/bits/shared_ptr_base.h:1370:69
#49 0x00007f6d4850742f std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::operator*() const /usr/include/c++/15.1.1/bits/shared_ptr_base.h:1358:40
#50 0x00007f6d4850742f clang::CompilerInvocation::getFrontendOpts() /usr/src/debug/clang/clang-20.1.8.src/include/clang/Frontend/CompilerInvocation.h:259:48
#51 0x00007f6d4850742f clang::CompilerInstance::getFrontendOpts() /usr/src/debug/clang/clang-20.1.8.src/include/clang/Frontend/CompilerInstance.h:313:39
#52 0x00007f6d4850742f clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/src/debug/clang/clang-20.1.8.src/lib/FrontendTool/ExecuteCompilerInvocation.cpp:297:29
#53 0x00005595527cfa03 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/src/debug/clang/clang-20.1.8.src/tools/driver/cc1_main.cpp:290:40
#54 0x00005595527d3781 ExecuteCC1Tool /usr/src/debug/clang/clang-20.1.8.src/tools/driver/driver.cpp:218:20
#55 0x00007f6d48048205 operator() /usr/src/debug/clang/clang-20.1.8.src/lib/Driver/Job.cpp:437:32
#56 0x00007f6d48048205 callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::string*, bool*) const::<lambda()> > /usr/include/llvm/ADT/STLFunctionalExtras
.h:46:52
#57 0x00007f6d3cbcbf88 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /usr/src/debug/llvm/llvm-20.1.8.src/lib/Support/CrashRecoveryContext.cpp:428:1
#58 0x00007f6d48052a15 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /
usr/src/debug/clang/clang-20.1.8.src/lib/Driver/Job.cpp:441:10
#59 0x00007f6d4807fcfb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /usr/src/debug/clang/clang-20.1.8.src/lib/Driver/Compilation
.cpp:196:22
#60 0x00007f6d480800ec clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /usr/src/debug/clang/cla
ng-20.1.8.src/lib/Driver/Compilation.cpp:251:5
#61 0x00007f6d48084895 llvm::SmallVectorBase<unsigned int>::empty() const /usr/include/llvm/ADT/SmallVector.h:81:46
#62 0x00007f6d48084895 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /usr/src/debug/clang/clang-20.1.8.sr
c/lib/Driver/Driver.cpp:2190:28
#63 0x00005595527d59e4 llvm::SmallVectorBase<unsigned int>::size() const /usr/include/llvm/ADT/SmallVector.h:78:32
#64 0x00005595527d59e4 llvm::SmallVectorTemplateCommon<std::pair<int, clang::driver::Command const*>, void>::end() /usr/include/llvm/ADT/SmallVector.h:269:41
#65 0x00005595527d59e4 clang_main(int, char**, llvm::ToolContext const&) /usr/src/debug/clang/clang-20.1.8.src/tools/driver/driver.cpp:404:26
#66 0x00005595527c61e0 main /usr/src/debug/clang/clang-20.1.8.src/build/tools/driver/clang-driver.cpp:18:1
#67 0x00007f6d3bc27675 __libc_start_call_main /usr/src/debug/glibc/glibc/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#68 0x00007f6d3bc27729 call_init /usr/src/debug/glibc/glibc/csu/../csu/libc-start.c:128:20
#69 0x00007f6d3bc27729 __libc_start_main /usr/src/debug/glibc/glibc/csu/../csu/libc-start.c:347:5
#70 0x00005595527c6245 _start (/usr/bin/clang-20+0xb245)
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 20.1.8
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /home/jbkonno/tmp/i_dare_you_to_compile_me-7cc4a1.c
clang: note: diagnostic msg: /home/jbkonno/tmp/i_dare_you_to_compile_me-7cc4a1.sh
clang: note: diagnostic msg:
********************
clang -v -std=c23 -march=x86-64-v4 -mtune=skylake-avx512 -Og -fpie -pipe -c -
408.19s user 0.98s system 99% cpu 6:50.33 total