using enum declaration with anonymous enum crashes clang frontend (original) (raw)
Minimal example:
enum {A, S, D, F}; // the enum is in an outer scope to avoid name collisions. This seems unrelated to the bug.
// enum Asdf {A, S, D, F}; // naming the enum prevents the crash
int main()
{
using asdf = decltype(A);
using enum asdf; // this line causes the crash
return 0;
}
Needs additional clang command line argument "-std=c++20" (or later) to support using-enum-declarations.
The gcc compiler compiles this code without any problems.
Downloaded compilers from https://winlibs.com/
exact file download link: https://github.com/brechtsanders/winlibs_mingw/releases/download/13.1.0-16.0.5-11.0.0-ucrt-r5/winlibs-x86_64-posix-seh-gcc-13.1.0-llvm-16.0.5-mingw-w64ucrt-11.0.0-r5.zip
OS: Windows
Expected behavior: the code should compile.
Observed behavior: clang frontend crashes with the following error message:
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: C:/Users/svetlin.totev/libs/mingw64/bin/clang.exe -cc1 -triple x86_64-w64-windows-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -mms-bitfields -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=C:/Users/svetlin.totev/Documents/test -resource-dir C:/Users/svetlin.totev/libs/mingw64/lib/clang/16 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++ -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++ -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13/x86_64-w64-mingw32 -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13/backward -internal-isystem C:/Users/svetlin.totev/libs/mingw64/lib/clang/16/include -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include -internal-isystem C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/usr/include -internal-isystem C:/Users/svetlin.totev/libs/mingw64/include -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=C:/Users/svetlin.totev/Documents/test -ferror-limit 19 -fmessage-length=208 -fno-use-cxa-atexit -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -exception-model=seh -fcolor-diagnostics -faddrsig -o C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-6235c7.o -x c++ test.cpp
1. test.cpp:6:20: current parser token ';'
2. test.cpp:4:1: parsing function body 'main'
3. test.cpp:4:1: in compound statement ('{}')
Exception Code: 0xC0000005
#0 0x00007ffc8f81c940 clang::DeclarationName::getFETokenInfo() const (C:\Users\svetlin.totev\libs\mingw64\bin\libclangSema.dll+0x55c940)
#1 0x00007ffc8f5921ae clang::IdentifierResolver::begin(clang::DeclarationName) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangSema.dll+0x2d21ae)
#2 0x00007ffc8f68d0e4 clang::Sema::PushOnScopeChains(clang::NamedDecl*, clang::Scope*, bool) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangSema.dll+0x3cd0e4)
#3 0x00007ffc8f739dd8 clang::Sema::ActOnUsingEnumDeclaration(clang::Scope*, clang::AccessSpecifier, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo&, clang::CXXScopeSpec*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangSema.dll+0x479dd8)
#4 0x00007ffce334d0af clang::Parser::ParseUsingDeclaration(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x3d0af)
#5 0x00007ffce338040d clang::Parser::ParseUsingDirectiveOrDeclaration(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation&, clang::ParsedAttributes&) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x7040d)
#6 0x00007ffce332ce33 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x1ce33)
#7 0x00007ffce338ea4e clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x7ea4e)
#8 0x00007ffce3370d8c clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x60d8c)
#9 0x00007ffce3362e8e clang::Parser::ParseCompoundStatementBody(bool) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x52e8e)
#10 0x00007ffce3366709 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x56709)
#11 0x00007ffce3354dd9 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x44dd9)
#12 0x00007ffce3328f35 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x18f35)
#13 0x00007ffce3378243 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x68243)
#14 0x00007ffce33861a2 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x761a2)
#15 0x00007ffce3359d76 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x49d76)
#16 0x00007ffce3332963 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x22963)
#17 0x00007ffce33934b0 clang::ParseAST(clang::Sema&, bool, bool) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangParse.dll+0x834b0)
#18 0x00007ffce46caa52 clang::FrontendAction::Execute() (C:\Users\svetlin.totev\libs\mingw64\bin\libclangFrontend.dll+0x4aa52)
#19 0x00007ffce46d051c clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangFrontend.dll+0x5051c)
#20 0x00007ffd25b739dd clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (C:\Users\svetlin.totev\libs\mingw64\bin\libclangFrontendTool.dll+0x39dd)
#21 0x00007ff74529ac56 (C:\Users\svetlin.totev\libs\mingw64\bin\clang.exe+0xac56)
#22 0x00007ff74529b385 (C:\Users\svetlin.totev\libs\mingw64\bin\clang.exe+0xb385)
#23 0x00007ff745296db6 (C:\Users\svetlin.totev\libs\mingw64\bin\clang.exe+0x6db6)
#24 0x00007ff7452912ee (C:\Users\svetlin.totev\libs\mingw64\bin\clang.exe+0x12ee)
#25 0x00007ff745291406 (C:\Users\svetlin.totev\libs\mingw64\bin\clang.exe+0x1406)
#26 0x00007ffd2d1d257d (C:\Windows\System32\KERNEL32.DLL+0x1257d)
#27 0x00007ffd2dbeaa58 (C:\Windows\SYSTEM32\ntdll.dll+0x5aa58)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
(built by Brecht Sanders) clang version 16.0.5
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Users/svetlin.totev/libs/mingw64/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-0047ff.cpp
clang: note: diagnostic msg: C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-0047ff.sh
clang: note: diagnostic msg:
********************
The files mentioned in the error message:
C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-0047ff.cpp:
# 1 "test.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 459 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "test.cpp" 2
enum {A, S, D, F};
int main()
{
using asdf = decltype(A);
using enum asdf;
return 0;
}
C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-0047ff.sh:
# Crash reproducer for (built by Brecht Sanders) clang version 16.0.5
# Driver args: "test.cpp" "-o" "text.exe" "-std=c++20"
# Original command: "C:/Users/svetlin.totev/libs/mingw64/bin/clang.exe" "-cc1" "-triple" "x86_64-w64-windows-gnu" "-emit-obj" "-mrelax-all" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "test.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-mms-bitfields" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=C:/Users/svetlin.totev/Documents/test" "-resource-dir" "C:/Users/svetlin.totev/libs/mingw64/lib/clang/16" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include/c++/13.1.0/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/include/c++/13.1.0/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1.0/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13.1/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13/x86_64-w64-mingw32" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/g++-v13/backward" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/lib/clang/16/include" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/include" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/x86_64-w64-mingw32/usr/include" "-internal-isystem" "C:/Users/svetlin.totev/libs/mingw64/include" "-std=c++20" "-fdeprecated-macro" "-fdebug-compilation-dir=C:/Users/svetlin.totev/Documents/test" "-ferror-limit" "19" "-fmessage-length=208" "-fno-use-cxa-atexit" "-fgnuc-version=4.2.1" "-fno-implicit-modules" "-fcxx-exceptions" "-fexceptions" "-exception-model=seh" "-fcolor-diagnostics" "-faddrsig" "-o" "C:/Users/SVETLI~1.TOT/AppData/Local/Temp/test-6235c7.o" "-x" "c++" "test.cpp"
"C:/Users/svetlin.totev/libs/mingw64/bin/clang.exe" "-cc1" "-triple" "x86_64-w64-windows-gnu" "-emit-obj" "-mrelax-all" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "test.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-mms-bitfields" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-fcoverage-compilation-dir=C:/Users/svetlin.totev/Documents/test" "-std=c++20" "-fdeprecated-macro" "-fdebug-compilation-dir=C:/Users/svetlin.totev/Documents/test" "-ferror-limit" "19" "-fmessage-length=208" "-fno-use-cxa-atexit" "-fgnuc-version=4.2.1" "-fno-implicit-modules" "-fcxx-exceptions" "-fexceptions" "-exception-model=seh" "-fcolor-diagnostics" "-faddrsig" "-x" "c++" "test-0047ff.cpp"