Skip to content

Clang 18.1.0-rc / trunk crash when generating code with coverage information - `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed #79957

@jeremiahar

Description

@jeremiahar

The following code crashes clang when compiled with code coverage enabled:

typedef void (*FunctionType)(); template <FunctionType table[]> void Dispatch() { table[1](); } void Handler() { } FunctionType Funcs[2] = { &Dispatch<Funcs>, &Handler }; void Foo() { Funcs[0](); }

Compiled with:

clang++-18 -std=c++17 -fprofile-instr-generate -fcoverage-mapping -c main.cpp 

Clang 18.1.0 version:

root@90719c8e4fca:/test# clang++-18 -v Debian clang version 18.1.0 (++20240129063153+3df71e5a3f5d-1~exp1~20240129183258.13) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12 Candidate multilib: .;@m64 Selected multilib: .;@m64 

Backtrace from clang 18.1.0:

root@90719c8e4fca:/test# clang++-18 -std=c++17 -fprofile-instr-generate -fcoverage-mapping -c main.cpp 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++-18 -std=c++17 -fprofile-instr-generate -fcoverage-mapping -c main.cpp 1. <eof> parser at end of file 2. Per-file LLVM IR generation 3. main.cpp:5:6: Generating code for declaration 'Dispatch' #0 0x000071b570df2bd6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd90bd6) #1 0x000071b570df0c00 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd8ec00) #2 0x000071b570d3ce40 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xcdae40) #3 0x000071b56fb9afd0 (/lib/x86_64-linux-gnu/libc.so.6+0x3bfd0) #4 0x000071b57967fff7 getStmtClass build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/Stmt.h:1357:44 #5 0x000071b57967fff7 classof build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/Expr.h:3980:15 #6 0x000071b57967fff7 doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:64:53 #7 0x000071b57967fff7 doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:110:12 #8 0x000071b57967fff7 doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:137:12 #9 0x000071b57967fff7 doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:127:12 #10 0x000071b57967fff7 isPossible build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:255:12 #11 0x000071b57967fff7 doCastIfPossible build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:493:10 #12 0x000071b57967fff7 dyn_cast<clang::BinaryOperator, const clang::Stmt> build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:663:10 #13 0x000071b57967fff7 Visit build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/StmtVisitor.h:47:37 #14 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #15 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #16 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #17 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #18 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #19 0x000071b5796812d0 getTrailingStmts build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/Expr.h:2832:51 #20 0x000071b5796812d0 getTrailingStmts build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/Expr.h:2835:42 #21 0x000071b5796812d0 getCallee build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/Expr.h:2947:53 #22 0x000071b5796812d0 VisitCallExpr build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:1481:30 #23 0x000071b5796858a2 VisitStmt build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #24 0x000071b57967fe33 begin build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/SmallVector.h:280:45 #25 0x000071b57967fe33 end build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/SmallVector.h:282:27 #26 0x000071b57967fe33 back build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/SmallVector.h:323:12 #27 0x000071b57967fe33 getRegion build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:998:24 #28 0x000071b57967fe33 propagateCounts build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:1010:25 #29 0x000071b57967e591 clang::CodeGen::CoverageMappingGen::emitCounterMapping(clang::Decl const*, llvm::raw_ostream&) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CoverageMappingGen.cpp:0:0 #30 0x000071b57964f025 flush build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/raw_ostream.h:186:9 #31 0x000071b57964f025 clang::CodeGen::CodeGenPGO::emitCounterRegionMapping(clang::Decl const*) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenPGO.cpp:1042:6 #32 0x000071b57964eba2 clang::CodeGen::CodeGenPGO::assignRegionCounters(clang::GlobalDecl, llvm::Function*) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenPGO.cpp:0:5 #33 0x000071b5795f89ed getKind build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/DeclBase.h:447:51 #34 0x000071b5795f89ed classof build-llvm/tools/clang/stage2-bins/clang/include/clang/AST/DeclCXX.h:2841:62 #35 0x000071b5795f89ed doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:64:53 #36 0x000071b5795f89ed doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:110:12 #37 0x000071b5795f89ed doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:137:12 #38 0x000071b5795f89ed doit build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:127:12 #39 0x000071b5795f89ed isPossible build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:255:12 #40 0x000071b5795f89ed isPossible build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:509:12 #41 0x000071b5795f89ed isa<clang::CXXDestructorDecl, const clang::FunctionDecl *> build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Casting.h:549:10 #42 0x000071b5795f89ed clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenFunction.cpp:1449:7 #43 0x000071b579619935 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenModule.cpp:5834:3 #44 0x000071b5796131fb clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenModule.cpp:0:12 #45 0x000071b579606613 __normal_iterator /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_iterator.h:1073:20 #46 0x000071b579606613 begin /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:879:16 #47 0x000071b579606613 empty /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:1084:16 #48 0x000071b579606613 clang::CodeGen::CodeGenModule::EmitDeferred() build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenModule.cpp:3192:26 #49 0x000071b57960428b empty build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/DenseMap.h:98:61 #50 0x000071b57960428b begin build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/DenseMap.h:78:9 #51 0x000071b57960428b clang::CodeGen::CodeGenModule::Release() build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenModule.cpp:807:45 #52 0x000071b5796b0d98 HandleTranslationUnit build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/ModuleBuilder.cpp:291:11 #53 0x000071b5795e9240 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenAction.cpp:306:9 #54 0x000071b57821a846 __normal_iterator /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_iterator.h:1073:20 #55 0x000071b57821a846 begin /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:869:16 #56 0x000071b57821a846 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> > > > > build-llvm/tools/clang/stage2-bins/clang/include/clang/Sema/TemplateInstCallback.h:54:16 #57 0x000071b57821a846 clang::ParseAST(clang::Sema&, bool, bool) build-llvm/tools/clang/stage2-bins/clang/lib/Parse/ParseAST.cpp:183:3 #58 0x000071b57a049025 clang::FrontendAction::Execute() build-llvm/tools/clang/stage2-bins/clang/lib/Frontend/FrontendAction.cpp:1073:10 #59 0x000071b579fbfef4 getPtr build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Error.h:279:12 #60 0x000071b579fbfef4 operator bool build-llvm/tools/clang/stage2-bins/llvm/include/llvm/Support/Error.h:239:16 #61 0x000071b579fbfef4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) build-llvm/tools/clang/stage2-bins/clang/lib/Frontend/CompilerInstance.cpp:1057:23 #62 0x000071b57a0c401e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) build-llvm/tools/clang/stage2-bins/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:272:25 #63 0x000064712c40fe0a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) build-llvm/tools/clang/stage2-bins/clang/tools/driver/cc1_main.cpp:294:15 #64 0x000064712c40d195 ExecuteCC1Tool build-llvm/tools/clang/stage2-bins/clang/tools/driver/driver.cpp:365:12 #65 0x000071b579c79e99 operator() build-llvm/tools/clang/stage2-bins/clang/lib/Driver/Job.cpp:440:30 #66 0x000071b579c79e99 callback_fn<(lambda at clang/lib/Driver/Job.cpp:440:22)> build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12 #67 0x000071b570d3cbdc llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xcdabdc) #68 0x000071b579c7981e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const build-llvm/tools/clang/stage2-bins/clang/lib/Driver/Job.cpp:440:7 #69 0x000071b579c41a11 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const build-llvm/tools/clang/stage2-bins/clang/lib/Driver/Compilation.cpp:199:15 #70 0x000071b579c41c5e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const build-llvm/tools/clang/stage2-bins/clang/lib/Driver/Compilation.cpp:253:13 #71 0x000071b579c5e29d empty build-llvm/tools/clang/stage2-bins/llvm/include/llvm/ADT/SmallVector.h:94:46 #72 0x000071b579c5e29d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) build-llvm/tools/clang/stage2-bins/clang/lib/Driver/Driver.cpp:1921:23 #73 0x000064712c40cb04 clang_main(int, char**, llvm::ToolContext const&) build-llvm/tools/clang/stage2-bins/clang/tools/driver/driver.cpp:540:21 #74 0x000064712c419f16 main build-llvm/tools/clang/stage2-bins/build-llvm/tools/clang/stage2-bins/tools/clang/tools/driver/clang-driver.cpp:17:10 #75 0x000071b56fb861ca (/lib/x86_64-linux-gnu/libc.so.6+0x271ca) #76 0x000071b56fb86285 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x27285) #77 0x000064712c409bc1 _start (/usr/lib/llvm-18/bin/clang+0xcbc1) clang++-18: error: clang frontend command failed with exit code 139 (use -v to see invocation) Debian clang version 18.1.0 (++20240129063153+3df71e5a3f5d-1~exp1~20240129183258.13) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin clang++-18: note: diagnostic msg: ******************** PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: Preprocessed source(s) and associated run script(s) are located at: clang++-18: note: diagnostic msg: /tmp/main-469ae6.cpp clang++-18: note: diagnostic msg: /tmp/main-469ae6.sh clang++-18: note: diagnostic msg: ******************** 

Clang trunk (assertions enabled) Godbolt link:
https://godbolt.org/z/8T5GqcfTs

Backtrace from clang trunk:

clang++: /root/llvm-project/llvm/include/llvm/Support/Casting.h:662: decltype(auto) llvm::dyn_cast(From*) [with To = clang::BinaryOperator; From = const clang::Stmt]: Assertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed. 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: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -std=c++17 -fprofile-instr-generate -fcoverage-mapping <source> 1.	<eof> parser at end of file 2.	Per-file LLVM IR generation 3.	<source>:4:6: Generating code for declaration 'Dispatch' #0 0x0000000003878878 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3878878) #1 0x000000000387655c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x387655c) #2 0x00000000037bf4c8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0 #3 0x00007f4ea9442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520) #4 0x00007f4ea94969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc) #5 0x00007f4ea9442476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476) #6 0x00007f4ea94287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3) #7 0x00007f4ea942871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b) #8 0x00007f4ea9439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96) #9 0x0000000003cd17c9 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #10 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #11 0x0000000003cd19e4 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #12 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #13 0x0000000003cd1697 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #14 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #15 0x0000000003cd1db4 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #16 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #17 0x0000000003cd1af4 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #18 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #19 0x0000000003cd3b72 (anonymous namespace)::CounterCoverageMappingBuilder::VisitCallExpr(clang::CallExpr const*) CoverageMappingGen.cpp:0:0 #20 0x0000000003cd1b94 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #21 0x0000000003cd3a43 (anonymous namespace)::CounterCoverageMappingBuilder::VisitStmt(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #22 0x0000000003cd29c8 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::CounterCoverageMappingBuilder, void>::Visit(clang::Stmt const*) CoverageMappingGen.cpp:0:0 #23 0x0000000003cd89ab clang::CodeGen::CoverageMappingGen::emitCounterMapping(clang::Decl const*, llvm::raw_ostream&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3cd89ab) #24 0x0000000003c85b50 clang::CodeGen::CodeGenPGO::emitCounterRegionMapping(clang::Decl const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c85b50) #25 0x0000000003cb8f1b clang::CodeGen::CodeGenPGO::assignRegionCounters(clang::GlobalDecl, llvm::Function*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3cb8f1b) #26 0x0000000003c154d3 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c154d3) #27 0x0000000003c78412 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c78412) #28 0x0000000003c72d15 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c72d15) #29 0x0000000003c7e3fd clang::CodeGen::CodeGenModule::EmitDeferred() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c7e3fd) #30 0x0000000003c811d3 clang::CodeGen::CodeGenModule::Release() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c811d3) #31 0x0000000004104ada (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) ModuleBuilder.cpp:0:0 #32 0x00000000041035fd clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x41035fd) #33 0x00000000060a4979 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x60a4979) #34 0x0000000004102eb8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4102eb8) #35 0x0000000004371739 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4371739) #36 0x00000000042f139e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x42f139e) #37 0x0000000004451e1e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4451e1e) #38 0x0000000000c13226 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc13226) #39 0x0000000000c0aa6a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0 #40 0x00000000041443f9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0 #41 0x00000000037bf974 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x37bf974) #42 0x00000000041449ef clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0 #43 0x000000000410c755 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x410c755) #44 0x000000000410d1bd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x410d1bd) #45 0x00000000041150f5 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x41150f5) #46 0x0000000000c105dc clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc105dc) #47 0x0000000000b07a74 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xb07a74) #48 0x00007f4ea9429d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90) #49 0x00007f4ea9429e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40) #50 0x0000000000c0a54e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc0a54e) clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation) Compiler returned: 134 

The test case is reduced from Highway's dispatch code https://github.com/google/highway/blob/cc0a171fb9bf8af5e8904b77259ce4ca5461172b/hwy/highway.h#L379 .

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:codegenIR generation bugs: mangling, exceptions, etc.coveragecrashPrefer [crash-on-valid] or [crash-on-invalid]

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions