Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

using enum error & crash #59014

Closed
urnathan opened this issue Nov 16, 2022 · 4 comments
Closed

using enum error & crash #59014

urnathan opened this issue Nov 16, 2022 · 4 comments
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" confirmed Verified by a second party crash Prefer [crash-on-valid] or [crash-on-invalid] duplicate Resolved as duplicate

Comments

@urnathan
Copy link
Contributor

urnathan commented Nov 16, 2022

A weird error and a crash

struct X 
{
  enum Masks {Mask = 1,Shift = 0};
};

void Foo (int a)
{
  using enum X::Masks;

  auto u = (Mask); // weird error
  auto v = (Mask << Shift); // ICE
}
~/llvm/trunk/build/bin/clang++ -std=c++20 -c uenum.cc 
uenum.cc:10:8: error: variable 'u' with type 'auto' has incompatible initializer of type '<overloaded function type>'
  auto u = (Mask);
       ^   ~~~~~~
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: /home/nathan/llvm/trunk/build/bin/clang++ -std=c++20 -c uenum.cc
1.	uenum.cc:11:26: current parser token ')'
2.	uenum.cc:7:1: parsing function body 'Foo'
3.	uenum.cc:7:1: in compound statement ('{}')
@EugeneZelenko EugeneZelenko added clang:frontend Language frontend issues, e.g. anything involving "Sema" crash Prefer [crash-on-valid] or [crash-on-invalid] and removed new issue labels Nov 16, 2022
@llvmbot
Copy link
Collaborator

llvmbot commented Nov 16, 2022

@llvm/issue-subscribers-clang-frontend

@shafik
Copy link
Collaborator

shafik commented Nov 16, 2022

This looks like #58057

I believe I have a fix, maybe I should put it up and see what folks think.

Adding backtrace for searchability:

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++20 <source>
1.	<source>:11:26: current parser token ')'
2.	<source>:7:1: parsing function body 'Foo'
3.	<source>:7:1: in compound statement ('{}')
 #0 0x000055687643c614 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055687643a3ac llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f883ac)
 #2 0x0000556876375cf8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f4ed38b4420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x0000556879161838 clang::Sema::FindAssociatedClassesAndNamespaces(clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, llvm::SmallSetVector<clang::DeclContext*, 16u>&, llvm::SmallSetVector<clang::CXXRecordDecl*, 16u>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6caf838)
 #5 0x0000556879162708 clang::Sema::ArgumentDependentLookup(clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::ADLResult&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6cb0708)
 #6 0x00005568792ba5cd clang::Sema::AddArgumentDependentLookupCandidates(clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::TemplateArgumentListInfo*, clang::OverloadCandidateSet&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6e085cd)
 #7 0x00005568792bc470 clang::Sema::LookupOverloadedBinOp(clang::OverloadCandidateSet&, clang::OverloadedOperatorKind, clang::UnresolvedSetImpl const&, llvm::ArrayRef<clang::Expr*>, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6e0a470)
 #8 0x00005568792bf9f6 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr*, clang::Expr*, bool, bool, clang::FunctionDecl*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6e0d9f6)
 #9 0x0000556878f1598d BuildOverloadedBinOp(clang::Sema&, clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) SemaExpr.cpp:0:0
#10 0x0000556878f7bc17 clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6ac9c17)
#11 0x0000556878f7c4f1 clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6aca4f1)
#12 0x0000556878aa0b5e clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*, true>, clang::prec::Level) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65eeb5e)
#13 0x0000556878aa463d clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65f263d)
#14 0x0000556878aaa93d clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65f893d)
#15 0x0000556878a9e159 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65ec159)
#16 0x0000556878aa031b clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65ee31b)
#17 0x0000556878aa333d clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65f133d)
#18 0x0000556878a606d5 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65ae6d5)
#19 0x0000556878a74af8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65c2af8)
#20 0x0000556878a75c91 clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65c3c91)
#21 0x0000556878a76109 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65c4109)
#22 0x0000556878b14fb5 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6662fb5)
#23 0x0000556878b15c55 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6663c55)
#24 0x0000556878b16c4a clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6664c4a)
#25 0x0000556878b1855a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x666655a)
#26 0x0000556878a483a1 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65963a1)
#27 0x0000556878a75040 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65c3040)
#28 0x0000556878a3cf82 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x658af82)
#29 0x0000556878a3d7e0 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#30 0x0000556878a42fab clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6590fab)
#31 0x0000556878a43e3a clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6591e3a)
#32 0x0000556878a381fa clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x65861fa)
#33 0x000055687776ed98 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x52bcd98)
#34 0x0000556876fffbb9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4b4dbb9)
#35 0x0000556876f8664e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4ad464e)
#36 0x00005568770e4f53 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c32f53)
#37 0x000055687392c5e4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x147a5e4)
#38 0x00005568739283e7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#39 0x0000556876df06c9 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) Job.cpp:0:0
#40 0x000055687637649a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ec449a)
#41 0x0000556876df0f1f 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) Job.cpp:0:0
#42 0x0000556876dba279 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4908279)
#43 0x0000556876dbacfd 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+++0x4908cfd)
#44 0x0000556876dc479c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x491279c)
#45 0x000055687392abd2 clang_main(int, char**) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x1478bd2)
#46 0x00007f4ed3362083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#47 0x0000556873923d1e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x1471d1e)
clang-16: error: clang frontend command failed with exit code 139 (use -v to see invocation)
ASM generation compiler returned: 139
<source>:10:8: error: variable 'u' with type 'auto' has incompatible initializer of type '<overloaded function type>'
  auto u = (Mask); // weird error
       ^   ~~~~~~
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-20221115/bin/clang-16 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -main-file-name example.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fcoverage-compilation-dir=/app -resource-dir /opt/compiler-explorer/clang-assertions-trunk-20221115/lib/clang/16 -internal-isystem /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/13.0.0/../../../../include/c++/13.0.0 -internal-isystem /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/13.0.0/../../../../include/c++/13.0.0/x86_64-linux-gnu -internal-isystem /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/13.0.0/../../../../include/c++/13.0.0/backward -internal-isystem /opt/compiler-explorer/clang-assertions-trunk-20221115/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/13.0.0/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=/app -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/example-ddeabb.o -x c++ <source>
1.	<source>:11:26: current parser token ')'
2.	<source>:7:1: parsing function body 'Foo'
3.	<source>:7:1: in compound statement ('{}')
 #0 0x00005635df67c614 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x00005635df679dc4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fb64d65a420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00005635e23a1838 clang::Sema::FindAssociatedClassesAndNamespaces(clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, llvm::SmallSetVector<clang::DeclContext*, 16u>&, llvm::SmallSetVector<clang::CXXRecordDecl*, 16u>&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6caf838)
 #4 0x00005635e23a2708 clang::Sema::ArgumentDependentLookup(clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::ADLResult&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6cb0708)
 #5 0x00005635e24fa5cd clang::Sema::AddArgumentDependentLookupCandidates(clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::TemplateArgumentListInfo*, clang::OverloadCandidateSet&, bool) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6e085cd)
 #6 0x00005635e24fc470 clang::Sema::LookupOverloadedBinOp(clang::OverloadCandidateSet&, clang::OverloadedOperatorKind, clang::UnresolvedSetImpl const&, llvm::ArrayRef<clang::Expr*>, bool) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6e0a470)
 #7 0x00005635e24ff9f6 clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr*, clang::Expr*, bool, bool, clang::FunctionDecl*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6e0d9f6)
 #8 0x00005635e215598d BuildOverloadedBinOp(clang::Sema&, clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) SemaExpr.cpp:0:0
 #9 0x00005635e21bbc17 clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6ac9c17)
#10 0x00005635e21bc4f1 clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6aca4f1)
#11 0x00005635e1ce0b5e clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*, true>, clang::prec::Level) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65eeb5e)
#12 0x00005635e1ce463d clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65f263d)
#13 0x00005635e1cea93d clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65f893d)
#14 0x00005635e1cde159 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65ec159)
#15 0x00005635e1ce031b clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65ee31b)
#16 0x00005635e1ce333d clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65f133d)
#17 0x00005635e1ca06d5 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65ae6d5)
#18 0x00005635e1cb4af8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65c2af8)
#19 0x00005635e1cb5c91 clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65c3c91)
#20 0x00005635e1cb6109 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65c4109)
#21 0x00005635e1d54fb5 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6662fb5)
#22 0x00005635e1d55c55 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6663c55)
#23 0x00005635e1d56c4a clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6664c4a)
#24 0x00005635e1d5855a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x666655a)
#25 0x00005635e1c883a1 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65963a1)
#26 0x00005635e1cb5040 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65c3040)
#27 0x00005635e1c7cf82 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x658af82)
#28 0x00005635e1c7d7e0 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#29 0x00005635e1c82fab clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6590fab)
#30 0x00005635e1c83e3a clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x6591e3a)
#31 0x00005635e1c781fa clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x65861fa)
#32 0x00005635e09aed98 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x52bcd98)
#33 0x00005635e023fbb9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x4b4dbb9)
#34 0x00005635e01c664e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x4ad464e)
#35 0x00005635e0324f53 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x4c32f53)
#36 0x00005635dcb6c5e4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x147a5e4)
#37 0x00005635dcb683e7 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#38 0x00005635dcb69b10 clang_main(int, char**) (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x1477b10)
#39 0x00007fb64d108083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#40 0x00005635dcb63d1e _start (/opt/compiler-explorer/clang-assertions-trunk-20221115/bin/clang-16+0x1471d1e)

@shafik shafik added confirmed Verified by a second party duplicate Resolved as duplicate labels Nov 16, 2022
@shafik
Copy link
Collaborator

shafik commented Nov 16, 2022

Also related to: #54746

@shafik shafik closed this as completed Nov 16, 2022
@EugeneZelenko EugeneZelenko closed this as not planned Won't fix, can't repro, duplicate, stale Nov 16, 2022
@shafik
Copy link
Collaborator

shafik commented Nov 16, 2022

shafik added a commit that referenced this issue Nov 29, 2022
… as NonType when they are brought into scope via using enum

Currently Sema::ClassifyName(...) in some cases when an enumerator is brought
into scope via using enum during lookup it can end up being classified as an
OverloadSet. It looks like this was never accounted for when using enum support
was implemented and we need to add a check to allow an EnumConstantDecl to be
classified as NonType even when it is a class member.

This fixes:
  #58057
  #59014
  #54746

Differential Revision: https://reviews.llvm.org/D138091
CarlosAlbertoEnciso pushed a commit to SNSystems/llvm-debuginfo-analyzer that referenced this issue Nov 30, 2022
… as NonType when they are brought into scope via using enum

Currently Sema::ClassifyName(...) in some cases when an enumerator is brought
into scope via using enum during lookup it can end up being classified as an
OverloadSet. It looks like this was never accounted for when using enum support
was implemented and we need to add a check to allow an EnumConstantDecl to be
classified as NonType even when it is a class member.

This fixes:
  llvm/llvm-project#58057
  llvm/llvm-project#59014
  llvm/llvm-project#54746

Differential Revision: https://reviews.llvm.org/D138091
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" confirmed Verified by a second party crash Prefer [crash-on-valid] or [crash-on-invalid] duplicate Resolved as duplicate
Projects
None yet
Development

No branches or pull requests

4 participants