Open haoxintu opened 4 years ago
Assertions build is still failing: https://godbolt.org/z/eYEMTjs9s Diagnostics:
<source>:2:18: error: use of undeclared identifier 'l_volatile_long'; did you mean 'g_volatile_bool'?
2 | struct decltype((l_volatile_long = throw))::template c<>
| ^~~~~~~~~~~~~~~
| g_volatile_bool
<source>:1:6: note: 'g_volatile_bool' declared here
1 | bool g_volatile_bool; a < b <
| ^
<source>:2:36: error: assigning to 'bool' from incompatible type 'void'
2 | struct decltype((l_volatile_long = throw))::template c<>
| ^~~~~
<source>:2:57: error: expected '>'
2 | struct decltype((l_volatile_long = throw))::template c<>
| ^
<source>:1:29: note: to match this '<'
1 | bool g_volatile_bool; a < b <
| ^
<source>:1:23: error: no template named 'a'
1 | bool g_volatile_bool; a < b <
| ^
<source>:2:36: error: assigning to 'bool' from incompatible type 'void'
2 | struct decltype((l_volatile_long = throw))::template c<>
| ^~~~~
Assertion:
clang++: /root/llvm-project/clang/lib/Sema/SemaTemplate.cpp:4222: clang::TypeResult clang::Sema::ActOnTagTemplateIdType(clang::Sema::TagUseKind, clang::TypeSpecifierType, clang::SourceLocation, clang::CXXScopeSpec&, clang::SourceLocation, clang::Sema::TemplateTy, clang::SourceLocation, clang::SourceLocation, clang::ASTTemplateArgsPtr, clang::SourceLocation): Assertion `SS.getScopeRep() == DTN->getQualifier()' failed.
Stack:
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 <source>
1. <eof> parser at end of file
#0 0x0000559635e23dbf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c12dbf)
#1 0x0000559635e21b2c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c10b2c)
#2 0x0000559635d6b1a8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f63c944e420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f63c8f1b00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#5 0x00007f63c8efa859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x00007f63c8efa729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#7 0x00007f63c8f0bfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x0000559638f370f2 clang::Sema::ActOnTagTemplateIdType(clang::Sema::TagUseKind, clang::TypeSpecifierType, clang::SourceLocation, clang::CXXScopeSpec&, clang::SourceLocation, clang::OpaquePtr<clang::TemplateName>, clang::SourceLocation, clang::SourceLocation, llvm::MutableArrayRef<clang::ParsedTemplateArgument>, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6d260f2)
#9 0x00005596385cdeb3 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x63bceb3)
#10 0x00005596385a6b1d clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6395b1d)
#11 0x00005596385a9dd5 clang::Parser::ParseSpecifierQualifierList(clang::DeclSpec&, clang::ImplicitTypenameContext, clang::AccessSpecifier, clang::Parser::DeclSpecContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6398dd5)
#12 0x00005596385b0318 clang::Parser::ParseTypeName(clang::SourceRange*, clang::DeclaratorContext, clang::AccessSpecifier, clang::Decl**, clang::ParsedAttributes*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x639f318)
#13 0x0000559638664559 clang::Parser::ParseTemplateArgument() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6453559)
#14 0x000055963866af2e clang::Parser::ParseTemplateArgumentList(llvm::SmallVector<clang::ParsedTemplateArgument, 16u>&, clang::OpaquePtr<clang::TemplateName>, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6459f2e)
#15 0x000055963866b30f clang::Parser::ParseTemplateIdAfterTemplateName(bool, clang::SourceLocation&, llvm::SmallVector<clang::ParsedTemplateArgument, 16u>&, clang::SourceLocation&, clang::OpaquePtr<clang::TemplateName>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x645a30f)
#16 0x000055963866b508 clang::Parser::AnnotateTemplateIdToken(clang::OpaquePtr<clang::TemplateName>, clang::TemplateNameKind, clang::CXXScopeSpec&, clang::SourceLocation, clang::UnqualifiedId&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x645a508)
#17 0x00005596385f2707 clang::Parser::ParseOptionalCXXScopeSpecifier(clang::CXXScopeSpec&, clang::OpaquePtr<clang::QualType>, bool, bool, bool*, bool, clang::IdentifierInfo**, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x63e1707)
#18 0x0000559638573ecd clang::Parser::TryAnnotateTypeOrScopeToken(clang::ImplicitTypenameContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6362ecd)
#19 0x0000559638675dfb clang::Parser::isCXXDeclarationSpecifier(clang::ImplicitTypenameContext, clang::Parser::TPResult, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6464dfb)
#20 0x0000559638679a4b clang::Parser::isCXXTypeId(clang::Parser::TentativeCXXTypeIdContext, bool&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6468a4b)
#21 0x000055963866453b clang::Parser::ParseTemplateArgument() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x645353b)
#22 0x000055963866af2e clang::Parser::ParseTemplateArgumentList(llvm::SmallVector<clang::ParsedTemplateArgument, 16u>&, clang::OpaquePtr<clang::TemplateName>, clang::SourceLocation) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6459f2e)
#23 0x000055963866b30f clang::Parser::ParseTemplateIdAfterTemplateName(bool, clang::SourceLocation&, llvm::SmallVector<clang::ParsedTemplateArgument, 16u>&, clang::SourceLocation&, clang::OpaquePtr<clang::TemplateName>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x645a30f)
#24 0x00005596385ac612 clang::Parser::ParseImplicitInt(clang::DeclSpec&, clang::CXXScopeSpec*, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x639b612)
#25 0x00005596385a91f3 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x63981f3)
#26 0x0000559638571c4b clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6360c4b)
#27 0x000055963857257f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#28 0x0000559638578f21 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6367f21)
#29 0x0000559638579896 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6368896)
#30 0x000055963856d65a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x635c65a)
#31 0x00005596370717c8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4e607c8)
#32 0x00005596368c8f09 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x46b7f09)
#33 0x000055963684d3d6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x463c3d6)
#34 0x00005596369ab9e6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x479a9e6)
#35 0x00005596332df46d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10ce46d)
#36 0x00005596332db16a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#37 0x00005596366b539d 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
#38 0x0000559635d6b6b0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3b5a6b0)
#39 0x00005596366b59bf 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
#40 0x000055963667d0ec clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x446c0ec)
#41 0x000055963667db7d 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+++0x446cb7d)
#42 0x0000559636685c5d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4474c5d)
#43 0x00005596332dd6ca clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10cc6ca)
#44 0x00005596331e4235 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xfd3235)
#45 0x00007f63c8efc083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#46 0x00005596332d5f4e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10c4f4e)
Extended Description
Hi, there.
This case, bug.cc, reduced by C-Reduce, makes clang-trunk crashed.
$cat bug.cc
$clang++ bug.cc bug.cc:2:18: error: use of undeclared identifier 'l_volatile_long'; did you mean 'g_volatile_bool'? struct decltype((l_volatile_long = throw))::template c<> ^
~~~~~~ g_volatile_bool bug.cc:1:6: note: 'g_volatile_bool' declared here bool g_volatile_bool; a < b < ^ bug.cc:2:36: error: assigning to 'bool' from incompatible type 'void' struct decltype((l_volatile_long = throw))::template c<> ^~~~~ bug.cc:2:57: error: expected '>' struct decltype((l_volatile_long = throw))::template c<> ^ bug.cc:1:29: note: to match this '<' bool g_volatile_bool; a < b < ^ bug.cc:1:23: error: no template named 'a' bool g_volatile_bool; a < b < ^ bug.cc:2:36: error: assigning to 'bool' from incompatible type 'void' struct decltype((l_volatile_long = throw))::template c<> ^~~~~ clang-11: /home/haoxin/compilers/llvm-project/clang/include/clang/AST/TypeLoc.h:2299: void clang::DependentTemplateSpecializationTypeLoc::setQualifierLoc(clang::NestedNameSpecifierLoc): Assertion `QualifierLoc.getNestedNameSpecifier() == getTypePtr()->getQualifier() && "Inconsistent nested-name-specifier pointer"' failed. PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script. Stack dump:PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: Preprocessed source(s) and associated run script(s) are located at: clang-11: note: diagnostic msg: /tmp/bug-0ff6ef.cpp clang-11: note: diagnostic msg: /tmp/bug-0ff6ef.sh clang-11: note: diagnostic msg:
$clang++ -v clang version 11.0.0 (https://github.com/llvm/llvm-project b9306fd042ce1c11d84f05d2124dfdc65b8331fe) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/haoxin/compilers/llvm-project/build/bin Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Candidate multilib: .;@m64 Selected multilib: .;@m64