Issue |
101690
|
Summary |
[Clang] Crash when attempting to take `decltype` of `std::` function replaced with builtin
|
Labels |
clang
|
Assignees |
|
Reporter |
MitalAshok
|
https://godbolt.org/z/63evv98EY
```c++
#include <utility>
decltype(std::move<int>)* p = nullptr;
```
```
clang++: /llvm/llvm-project/clang/lib/Sema/SemaType.cpp:9471: clang::QualType clang::Sema::BuildDecltypeType(clang::Expr *, bool): Assertion `!E->hasPlaceholderType() && "unexpected placeholder"' 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: /cmake-build-debug/bin/clang++ -cc1 test.cpp
1. test.cpp:2:29: current parser token '='
#0 0x000055fbd410fe5d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:11
#1 0x000055fbd411034b PrintStackTraceSignalHandler(void*) /llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x000055fbd410e3b6 llvm::sys::RunSignalHandlers() /llvm/llvm-project/llvm/lib/Support/Signals.cpp:105:5
#3 0x000055fbd4110b05 SignalHandler(int) /llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x00007f74ad5bc520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007f74ad6109fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x00007f74ad6109fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#7 0x00007f74ad6109fc pthread_kill ./nptl/pthread_kill.c:89:10
#8 0x00007f74ad5bc476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#9 0x00007f74ad5a27f3 abort ./stdlib/abort.c:81:7
#10 0x00007f74ad5a271b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007f74ad5b3e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x000055fbda65c905 clang::Sema::BuildDecltypeType(clang::Expr*, bool) /llvm/llvm-project/clang/lib/Sema/SemaType.cpp:9473:21
#13 0x000055fbda660b2b ConvertDeclSpecToType((anonymous namespace)::TypeProcessingState&) /llvm/llvm-project/clang/lib/Sema/SemaType.cpp:1261:16
#14 0x000055fbda650d5c GetDeclSpecTypeForDeclarator((anonymous namespace)::TypeProcessingState&, clang::TypeSourceInfo*&) /llvm/llvm-project/clang/lib/Sema/SemaType.cpp:3088:9
#15 0x000055fbda650b9c clang::Sema::GetTypeForDeclarator(clang::Declarator&) /llvm/llvm-project/clang/lib/Sema/SemaType.cpp:5652:16
#16 0x000055fbd91e827f clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) /llvm/llvm-project/clang/lib/Sema/SemaDecl.cpp:6279:19
#17 0x000055fbd91e7b50 clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) /llvm/llvm-project/clang/lib/Sema/SemaDecl.cpp:6046:15
#18 0x000055fbd8ce318c clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) /llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp:2754:14
#19 0x000055fbd8ce1ebb clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) /llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp:2559:9
#20 0x000055fbd8c33b5c clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /llvm/llvm-project/clang/lib/Parse/Parser.cpp:1249:10
#21 0x000055fbd8c3303e clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /llvm/llvm-project/clang/lib/Parse/Parser.cpp:1271:12
#22 0x000055fbd8c328c9 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /llvm/llvm-project/clang/lib/Parse/Parser.cpp:1074:14
#23 0x000055fbd8c306ec clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /llvm/llvm-project/clang/lib/Parse/Parser.cpp:763:12
#24 0x000055fbd8c2b23c clang::ParseAST(clang::Sema&, bool, bool) /llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:171:16
#25 0x000055fbd5676211 clang::ASTFrontendAction::ExecuteAction() /llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1194:1
#26 0x000055fbd5675c2c clang::FrontendAction::Execute() /llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1082:7
#27 0x000055fbd5590536 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1061:23
#28 0x000055fbd5853dfe clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:280:8
#29 0x000055fbd2208ad9 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /llvm/llvm-project/clang/tools/driver/cc1_main.cpp:285:13
#30 0x000055fbd21fb432 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /llvm/llvm-project/clang/tools/driver/driver.cpp:215:5
#31 0x000055fbd21fa19b clang_main(int, char**, llvm::ToolContext const&) /llvm/llvm-project/clang/tools/driver/driver.cpp:256:5
#32 0x000055fbd222f885 main /cmake-build-debug/tools/clang/tools/driver/clang-driver.cpp:17:3
#33 0x00007f74ad5a3d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#34 0x00007f74ad5a3e40 call_init ./csu/../csu/libc-start.c:128:20
#35 0x00007f74ad5a3e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#36 0x000055fbd21f9c25 _start (/cmake-build-debug/bin/clang+++0x5bdbc25)
```
`decltype(&std::move<int>)`, `decltype(+std::move<int>)`, `decltype((std::move<int>))` do not crash.
It also doesn't crash with `-fno-builtin`.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs