| Issue |
208488
|
| Summary |
[clang] Crash (in ASTContext::getTypeInfoImpl) with deleted function in call-chain
|
| Labels |
clang
|
| Assignees |
|
| Reporter |
VReichelt
|
When compiling the invalid code snippet below, the compiler triggers an assertion after displaying a correct error message:
```
auto f() = delete;
auto g()
{
auto x = f();
return x;
}
```
```
bug.cc:5:12: error: call to deleted function 'f'
5 | auto x = f();
| ^
bug.cc:1:6: note: candidate function has been explicitly deleted
1 | auto f() = delete;
| ^
clang++: /LLVM/llvm-project-22.1.3.src/clang/lib/AST/ASTContext.cpp:2428: clang::TypeInfo clang::ASTContext::getTypeInfoImpl(const clang::Type*) const: Assertion `!A->getDeducedType().isNull() && "cannot request the size of an undeduced or dependent auto type"' failed.
```
Stack dump:
```
0. Program arguments: /LLVM/LLVM-22.1.3/bin/clang++ -c bug.cc
1. bug.cc:6:11: current parser token ';'
2. bug.cc:4:1: parsing function body 'g'
3. bug.cc:4:1: in compound statement ('{}')
#0 0x000000000436d75b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/LLVM/LLVM-22.1.3/bin/clang+++0x436d75b)
#1 0x000000000436af14 llvm::sys::CleanupOnSignal(unsigned long) (/LLVM/LLVM-22.1.3/bin/clang+++0x436af14)
#2 0x000000000429da20 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f54cdabb990 __restore_rt (/lib64/libpthread.so.0+0x12990)
#4 0x00007f54cc52a5af raise (/lib64/libc.so.6+0x4e5af)
#5 0x00007f54cc4fdee5 abort (/lib64/libc.so.6+0x21ee5)
#6 0x00007f54cc4fddb9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21db9)
#7 0x00007f54cc522f06 (/lib64/libc.so.6+0x46f06)
#8 0x00000000078a4fe4 clang::ASTContext::getTypeInfoImpl(clang::Type const*) const (/LLVM/LLVM-22.1.3/bin/clang+++0x78a4fe4)
#9 0x00000000078a0912 clang::ASTContext::getTypeInfo(clang::Type const*) const (/LLVM/LLVM-22.1.3/bin/clang+++0x78a0912)
#10 0x00000000078a0912 clang::ASTContext::getTypeInfo(clang::Type const*) const (/LLVM/LLVM-22.1.3/bin/clang+++0x78a0912)
#11 0x00000000078a4ae2 clang::ASTContext::getTypeAlignInChars(clang::QualType) const (/LLVM/LLVM-22.1.3/bin/clang+++0x78a4ae2)
#12 0x00000000072741f2 clang::Sema::getNamedReturnInfo(clang::VarDecl const*) (/LLVM/LLVM-22.1.3/bin/clang+++0x72741f2)
#13 0x0000000007274381 clang::Sema::getNamedReturnInfo(clang::Expr*&, clang::Sema::SimplerImplicitMoveMode) (/LLVM/LLVM-22.1.3/bin/clang+++0x7274381)
#14 0x0000000007288c42 clang::Sema::BuildReturnStmt(clang::SourceLocation, clang::Expr*, bool) (/LLVM/LLVM-22.1.3/bin/clang+++0x7288c42)
#15 0x000000000728a2af clang::Sema::ActOnReturnStmt(clang::SourceLocation, clang::Expr*, clang::Scope*) (/LLVM/LLVM-22.1.3/bin/clang+++0x728a2af)
#16 0x00000000069ff403 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::LabelDecl*) (/LLVM/LLVM-22.1.3/bin/clang+++0x69ff403)
#17 0x0000000006a0054b clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::LabelDecl*) (/LLVM/LLVM-22.1.3/bin/clang+++0x6a0054b)
#18 0x0000000006a01d9d clang::Parser::ParseCompoundStatementBody(bool) (/LLVM/LLVM-22.1.3/bin/clang+++0x6a01d9d)
#19 0x0000000006a02618 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/LLVM/LLVM-22.1.3/bin/clang+++0x6a02618)
#20 0x00000000068f5705 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/LLVM/LLVM-22.1.3/bin/clang+++0x68f5705)
#21 0x000000000693e584 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/LLVM/LLVM-22.1.3/bin/clang+++0x693e584)
#22 0x00000000068ee9a1 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/LLVM/LLVM-22.1.3/bin/clang+++0x68ee9a1)
#23 0x00000000068ef17f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/LLVM/LLVM-22.1.3/bin/clang+++0x68ef17f)
#24 0x00000000068f87f1 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/LLVM/LLVM-22.1.3/bin/clang+++0x68f87f1)
#25 0x00000000068f982d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/LLVM/LLVM-22.1.3/bin/clang+++0x68f982d)
#26 0x00000000068d734a clang::ParseAST(clang::Sema&, bool, bool) (/LLVM/LLVM-22.1.3/bin/clang+++0x68d734a)
[...]
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 22.1.3
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /LLVM/LLVM-22.1.3/bin
Build config: +assertions
```
This happens since LLVM 16 and still affects today's trunk.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs