LLVM Bugzilla is read-only and represents the historical archive of all LLVM issues filled before November 26, 2021. Use github to submit LLVM bugs

Bug 50063 - code using consteval: "clang/lib/CodeGen/Address.h:38: llvm::Value* clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed."
Summary: code using consteval: "clang/lib/CodeGen/Address.h:38: llvm::Value* clang::Co...
Status: RESOLVED DUPLICATE of bug 51484
Alias: None
Product: clang
Classification: Unclassified
Component: -New Bugs (show other bugs)
Version: trunk
Hardware: PC Linux
: P enhancement
Assignee: Unassigned Clang Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-04-21 08:56 PDT by Stephan Bergmann
Modified: 2021-10-14 12:06 PDT (History)
6 users (show)

See Also:
Fixed By Commit(s):


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stephan Bergmann 2021-04-21 08:56:53 PDT
At least on recent trunk:

> $ cat test.cc
> struct S {
>     consteval S() {}
>     union {
>         int a;
>         unsigned b = 0;
>     };
> };
> void f() { S(); }

> $ clang++ -std=c++20 -c test.cc
> test.cc:8:12: warning: expression result unused [-Wunused-value]
> void f() { S(); }
>            ^~~
> clang++: llvm-project/clang/lib/CodeGen/Address.h:38: llvm::Value* clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.
> PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
> Stack dump:
> 0.    Program arguments: clang++ -std=c++20 -c test.cc
> 1.    <eof> parser at end of file
> 2.    test.cc:8:6: LLVM IR generation of declaration 'f'
> 3.    test.cc:8:6: Generating code for declaration 'f'
>  #0 0x0000000005fa321d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) llvm-project/llvm/lib/Support/Unix/Signals.inc:569:3
>  #1 0x0000000005fa0ed4 llvm::sys::RunSignalHandlers() llvm-project/llvm/lib/Support/Signals.cpp:76:20
>  #2 0x0000000005f08938 HandleCrash llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:75:5
>  #3 0x0000000005f08938 CrashRecoverySignalHandler(int) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:388:62
>  #4 0x00007f3888ea71e0 __restore_rt sigaction.c:0:0
>  #5 0x00007f388895f9d5 raise /usr/src/debug/glibc-2.32-37-g760e1d2878/signal/../sysdeps/unix/sysv/linux/raise.c:50:1
>  #6 0x00007f38889488a4 abort /usr/src/debug/glibc-2.32-37-g760e1d2878/stdlib/abort.c:81:7
>  #7 0x00007f3888948789 get_sysdep_segment_value /usr/src/debug/glibc-2.32-37-g760e1d2878/intl/loadmsgcat.c:509:8
>  #8 0x00007f3888948789 _nl_load_domain.cold /usr/src/debug/glibc-2.32-37-g760e1d2878/intl/loadmsgcat.c:970:34
>  #9 0x00007f3888958026 .annobin___GI___assert_fail.end assert.c:0:0
> #10 0x00000000063b16d3 (llvm/inst/bin/clang+++0x63b16d3)
> #11 0x00000000063bc1c7 clang::CharUnits::alignmentAtOffset(clang::CharUnits) const llvm-project/llvm/include/llvm/IR/DerivedTypes.h:653:41
> #12 0x00000000063bc1c7 clang::CodeGen::CGBuilderTy::CreateStructGEP(clang::CodeGen::Address, unsigned int, llvm::Twine const&) llvm-project/clang/lib/CodeGen/CGBuilder.h:197:65
> #13 0x00000000063db941 clang::CodeGen::CodeGenFunction::EmitAggregateStore(llvm::Value*, clang::CodeGen::Address, bool) llvm-project/clang/lib/CodeGen/CGCall.cpp:1303:59
> #14 0x00000000064e6911 Visit llvm-project/clang/lib/CodeGen/CGExprAgg.cpp:106:33
> #15 0x00000000064e6911 (anonymous namespace)::AggExprEmitter::VisitCastExpr(clang::CastExpr*) llvm-project/clang/lib/CodeGen/CGExprAgg.cpp:855:10
> #16 0x00000000064e24b8 Visit llvm-project/clang/lib/CodeGen/CGExprAgg.cpp:106:33
> #17 0x00000000064e24b8 clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*, clang::CodeGen::AggValueSlot) llvm-project/clang/lib/CodeGen/CGExprAgg.cpp:1992:54
> #18 0x000000000640e3d7 clang::CodeGen::AggValueSlot::asRValue() const llvm-project/clang/lib/CodeGen/CGValue.h:640:5
> #19 0x000000000640e3d7 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) llvm-project/clang/lib/CodeGen/CGExpr.cpp:226:29
> #20 0x000000000642109b clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) llvm-project/clang/lib/CodeGen/CGExpr.cpp:204:63
> #21 0x000000000642109b clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) llvm-project/clang/lib/CodeGen/CGExpr.cpp:202:6
> #22 0x000000000646291b llvm::IRBuilderBase::GetInsertBlock() const llvm-project/llvm/include/llvm/IR/IRBuilder.h:178:47
> #23 0x000000000646291b clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) llvm-project/clang/lib/CodeGen/CGStmt.cpp:122:56
> #24 0x00000000064632d4 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) llvm-project/clang/lib/CodeGen/CGStmt.cpp:458:31
> #25 0x000000000643959b clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1193:36
> #26 0x0000000006447103 clang::CodeGen::CodeGenModule::getLangOpts() const llvm-project/clang/lib/CodeGen/CodeGenModule.h:703:51
> #27 0x0000000006447103 clang::CodeGen::CodeGenFunction::getLangOpts() const llvm-project/clang/lib/CodeGen/CodeGenFunction.h:1925:67
> #28 0x0000000006447103 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1371:19
> #29 0x00000000062e7fbc clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:4780:3
> #30 0x00000000062e4abb clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3166:47
> #31 0x00000000062ec57a clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:5884:1
> #32 0x0000000006a80621 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) llvm-project/clang/lib/CodeGen/ModuleBuilder.cpp:169:67
> #33 0x0000000006a761d3 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:217:7
> #34 0x0000000007b0d994 clang::ParseAST(clang::Sema&, bool, bool) llvm-project/clang/lib/Parse/ParseAST.cpp:162:17
> #35 0x00000000069a4a39 clang::FrontendAction::Execute() llvm-project/clang/lib/Frontend/FrontendAction.cpp:949:21
> #36 0x00000000068dca46 llvm::Error::setChecked(bool) llvm-project/llvm/include/llvm/Support/Error.h:305:22
> #37 0x00000000068dca46 llvm::Error::operator bool() llvm-project/llvm/include/llvm/Support/Error.h:236:15
> #38 0x00000000068dca46 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) llvm-project/clang/lib/Frontend/CompilerInstance.cpp:960:42
> #39 0x0000000006a5ac4b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:279:32
> #40 0x0000000003b0e8f4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) llvm-project/clang/tools/driver/cc1_main.cpp:246:40
> #41 0x0000000003b07f9d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) llvm-project/clang/tools/driver/driver.cpp:338:20
> #42 0x0000000006799495 operator() llvm-project/clang/lib/Driver/Job.cpp:404:32
> #43 0x0000000006799495 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) llvm-project/llvm/include/llvm/ADT/STLExtras.h:185:52
> #44 0x0000000005f08aa4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:425:10
> #45 0x000000000679a0fb clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) llvm-project/clang/lib/Driver/Job.cpp:408:10
> #46 0x0000000006769542 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const llvm-project/clang/lib/Driver/Compilation.cpp:197:3
> #47 0x0000000006769c21 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const llvm-project/clang/lib/Driver/Compilation.cpp:249:5
> #48 0x0000000006773cf1 llvm::SmallVectorBase<unsigned int>::empty() const llvm-project/llvm/include/llvm/ADT/SmallVector.h:73:47
> #49 0x0000000006773cf1 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) llvm-project/clang/lib/Driver/Driver.cpp:1538:28
> #50 0x0000000003b0b6f6 main llvm-project/clang/tools/driver/driver.cpp:513:5
> #51 0x00007f388894a1e2 __libc_start_main /usr/src/debug/glibc-2.32-37-g760e1d2878/csu/../csu/libc-start.c:314:16
> #52 0x0000000003b0734e _start (llvm/inst/bin/clang+++0x3b0734e)
> clang-13: error: clang frontend command failed with exit code 134 (use -v to see invocation)
> clang version 13.0.0 (git@github.com:llvm/llvm-project 843d08ef68702d5572b0f16efeb9b71387168bfb)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
[...]
Comment 1 Stephan Bergmann 2021-04-22 01:53:23 PDT
This started to fail with <https://github.com/llvm/llvm-project/commit/3bab88b7baa20b276faaee0aa7ca87f636c91877> "Prevent IR-gen from emitting consteval declarations".
Comment 2 Aaron Ballman 2021-10-14 12:06:39 PDT

*** This bug has been marked as a duplicate of bug 51484 ***