Open haoxintu opened 3 years ago
A possible duplicate.
$ clang-trunk -v
clang version 13.0.0 (https://github.com/llvm/llvm-project.git ef906573a127cffef7cae75d5155c15a8a2a3a5e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/cnsun/usr/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
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
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
$ cat mutant.c
main() {
unsigned a unsigned b;
__atomic_fetch_xor(&a, b, sizeof x);
}
$ clang-trunk mutant.c
mutant.c:1:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main() {
^
mutant.c:2:13: error: expected ';' at end of declaration
unsigned a unsigned b;
^
;
clang-13: /tmp/tmp.B1HwadcXIH-clang-builder/llvm-project/clang/lib/AST/ExprConstant.cpp:15525: llvm::Optional<llvm::APSInt> clang::Expr::getIntegerConstantExpr(const clang::ASTContext&, clang::SourceLocation*, bool) const: Assertion `!isValueDependent() && "Expression evaluator can't be called on a dependent expression."' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /scratch/software/clang-trunk/bin/clang-13 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name mutant.c -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/default_c_finding_folder/crash_20210625_140252_1028/delta/perses_result -resource-dir /scratch/software/clang-trunk/lib/clang/13.0.0 -c-isystem . -c-isystem /usr/local/include/cmsith -internal-isystem /scratch/software/clang-trunk/lib/clang/13.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/default_c_finding_folder/crash_20210625_140252_1028/delta/perses_result -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/mutant-76d37d.o -x c mutant.c
1. mutant.c:3:37: current parser token ')'
2. mutant.c:1:8: parsing function body 'main'
3. mutant.c:1:8: in compound statement ('{}')
#​0 0x000055860b5931f4 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#​1 0x000055860b5909ae SignalHandler(int) Signals.cpp:0:0
#​2 0x00007f0e065d93c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
#​3 0x00007f0e0607818b raise /build/glibc-ZN95T4/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#​4 0x00007f0e06057859 abort /build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:81:7
#​5 0x00007f0e06057729 get_sysdep_segment_value /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:509:8
#​6 0x00007f0e06057729 _nl_load_domain /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:970:34
#​7 0x00007f0e06068f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
#​8 0x000055860e698391 clang::Expr::getIntegerConstantExpr(clang::ASTContext const&, clang::SourceLocation*, bool) const (/scratch/software/clang-trunk/bin/clang-13+0x6a5e391)
#​9 0x000055860d9483d3 clang::Sema::BuildAtomicExpr(clang::SourceRange, clang::SourceRange, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::AtomicExpr::AtomicOp, clang::Sema::AtomicArgumentOrder) (/scratch/software/clang-trunk/bin/clang-13+0x5d0e3d3)
#​10 0x000055860d9487c0 clang::Sema::SemaAtomicOpsOverloaded(clang::ActionResult<clang::Expr*, true>, clang::AtomicExpr::AtomicOp) (/scratch/software/clang-trunk/bin/clang-13+0x5d0e7c0)
#​11 0x000055860d97c45b clang::Sema::CheckBuiltinFunctionCall(clang::FunctionDecl*, unsigned int, clang::CallExpr*) (/scratch/software/clang-trunk/bin/clang-13+0x5d4245b)
#​12 0x000055860dc549c7 clang::Sema::BuildResolvedCallExpr(clang::Expr*, clang::NamedDecl*, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, clang::CallExpr::ADLCallKind) (/scratch/software/clang-trunk/bin/clang-13+0x601a9c7)
#​13 0x000055860dc5597b clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/scratch/software/clang-trunk/bin/clang-13+0x601b97b)
#​14 0x000055860dc56d3d clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/scratch/software/clang-trunk/bin/clang-13+0x601cd3d)
#​15 0x000055860d80a7cb clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/scratch/software/clang-trunk/bin/clang-13+0x5bd07cb)
#​16 0x000055860d8038d2 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/scratch/software/clang-trunk/bin/clang-13+0x5bc98d2)
#​17 0x000055860d8063cb clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/scratch/software/clang-trunk/bin/clang-13+0x5bcc3cb)
#​18 0x000055860d80646d clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/scratch/software/clang-trunk/bin/clang-13+0x5bcc46d)
#​19 0x000055860d8099cd clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/scratch/software/clang-trunk/bin/clang-13+0x5bcf9cd)
#​20 0x000055860d87160e clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/scratch/software/clang-trunk/bin/clang-13+0x5c3760e)
#​21 0x000055860d868ba2 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributesWithRange&) (/scratch/software/clang-trunk/bin/clang-13+0x5c2eba2)
#​22 0x000055860d86958a clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/scratch/software/clang-trunk/bin/clang-13+0x5c2f58a)
#​23 0x000055860d86a509 clang::Parser::ParseCompoundStatementBody(bool) (/scratch/software/clang-trunk/bin/clang-13+0x5c30509)
#​24 0x000055860d86cb1a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/scratch/software/clang-trunk/bin/clang-13+0x5c32b1a)
#​25 0x000055860d7b2db2 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/scratch/software/clang-trunk/bin/clang-13+0x5b78db2)
#​26 0x000055860d7df710 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/scratch/software/clang-trunk/bin/clang-13+0x5ba5710)
#​27 0x000055860d7ad5b6 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/scratch/software/clang-trunk/bin/clang-13+0x5b735b6)
#​28 0x000055860d7adba1 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#​29 0x000055860d7b43a7 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/scratch/software/clang-trunk/bin/clang-13+0x5b7a3a7)
#​30 0x000055860d7b593e clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b7b93e)
#​31 0x000055860d7b5ce9 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) (/scratch/software/clang-trunk/bin/clang-13+0x5b7bce9)
#​32 0x000055860d7a815a clang::ParseAST(clang::Sema&, bool, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b6e15a)
#​33 0x000055860c6ef458 clang::CodeGenAction::ExecuteAction() (/scratch/software/clang-trunk/bin/clang-13+0x4ab5458)
#​34 0x000055860bf9e9e9 clang::FrontendAction::Execute() (/scratch/software/clang-trunk/bin/clang-13+0x43649e9)
#​35 0x000055860bf31c36 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/scratch/software/clang-trunk/bin/clang-13+0x42f7c36)
#​36 0x000055860c07c870 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/scratch/software/clang-trunk/bin/clang-13+0x4442870)
#​37 0x0000558608e9c696 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/scratch/software/clang-trunk/bin/clang-13+0x1262696)
#​38 0x0000558608e989d8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#​39 0x0000558608dc60e6 main (/scratch/software/clang-trunk/bin/clang-13+0x118c0e6)
#​40 0x00007f0e060590b3 __libc_start_main /build/glibc-ZN95T4/glibc-2.31/csu/../csu/libc-start.c:342:3
#​41 0x0000558608e9854e _start (/scratch/software/clang-trunk/bin/clang-13+0x125e54e)
clang-13: error: unable to execute command: Aborted (core dumped)
clang-13: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 13.0.0 (https://github.com/llvm/llvm-project.git ef906573a127cffef7cae75d5155c15a8a2a3a5e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/cnsun/usr/bin
clang-13: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-13: note: diagnostic msg: /tmp/mutant-2d6fad.c
clang-13: note: diagnostic msg: /tmp/mutant-2d6fad.sh
clang-13: note: diagnostic msg:
********************
Still crashes on current main
: https://clang.godbolt.org/z/4MrTco1q1
I am running into this crash in Clang 17 when working with std::byte.
0. Program arguments: /Users/danakj/s/llvm/install/bin/clang++ -I/Users/danakj/s/subspace -I/Users/danakj/s/subspace/third_party/googletest -I/Users/danakj/s/subspace/third_party/fmt/include -isystem /Users/danakj/s/subspace/third_party/googletest/googletest/include -isystem /Users/danakj/s/subspace/third_party/googletest/googletest -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include/c++/v1 -isystem /Users/danakj/s/llvm/install-17/lib/clang/17/include -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include -O3 -DNDEBUG -std=gnu++20 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.4 -fno-rtti -Wno-nullability-completeness -Werror -MD -MT sus/CMakeFiles/subspace_unittests.dir/num/transmogrify_unittest.cc.o -MF sus/CMakeFiles/subspace_unittests.dir/num/transmogrify_unittest.cc.o.d -o sus/CMakeFiles/subspace_unittests.dir/num/transmogrify_unittest.cc.o -c /Users/danakj/s/subspace/sus/num/transmogrify_unittest.cc
1. /Users/danakj/s/subspace/sus/num/transmogrify_unittest.cc:620:40: current parser token ')'
2. /Users/danakj/s/subspace/sus/num/transmogrify_unittest.cc:20:1: parsing namespace '(anonymous)'
3. /Users/danakj/s/subspace/sus/num/transmogrify_unittest.cc:619:32: parsing function body '(anonymous namespace)::NumTransmogrify_stdbyte_Test::TestBody'
4. /Users/danakj/s/subspace/sus/num/transmogrify_unittest.cc:619:32: in compound statement ('{}')
#0 0x00000001068341d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10214c1d8)
#1 0x0000000106832784 llvm::sys::RunSignalHandlers() (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10214a784)
#2 0x00000001068339d0 llvm::sys::CleanupOnSignal(unsigned long) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10214b9d0)
#3 0x000000010679b828 CrashRecoverySignalHandler(int) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1020b3828)
#4 0x00000001a86dea24 (/usr/lib/system/libsystem_platform.dylib+0x18042ea24)
#5 0x00000001a86afc28 (/usr/lib/system/libsystem_pthread.dylib+0x1803ffc28)
#6 0x00000001a85bdae8 (/usr/lib/system/libsystem_c.dylib+0x18030dae8)
#7 0x00000001a85bce44 (/usr/lib/system/libsystem_c.dylib+0x18030ce44)
#8 0x000000010a61a648 FastEvaluateAsRValue(clang::Expr const*, clang::Expr::EvalResult&, clang::ASTContext const&, bool&) (.cold.1) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x105f32648)
#9 0x0000000108d24b44 clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext const&, clang::Expr::ConstantExprKind) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10463cb44)
#10 0x00000001083000ec clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c180ec)
#11 0x0000000108300014 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18014)
#12 0x00000001082fb5ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c135ec)
#13 0x00000001082fb36c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c1336c)
#14 0x00000001087e8e50 clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104100e50)
#15 0x0000000108901b34 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104219b34)
#16 0x00000001088f90f0 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042110f0)
#17 0x0000000108300d98 calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7::operator()(clang::Expr const*) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18d98)
#18 0x00000001083005c8 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c185c8)
#19 0x00000001082fffd8 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c17fd8)
#20 0x00000001082fb5ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c135ec)
#21 0x00000001082fb36c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c1336c)
#22 0x00000001087e8e50 clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104100e50)
#23 0x0000000108901b34 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104219b34)
#24 0x00000001088f90f0 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042110f0)
#25 0x0000000108300d98 calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7::operator()(clang::Expr const*) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18d98)
#26 0x0000000108300080 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18080)
#27 0x00000001082fb5ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c135ec)
#28 0x00000001082fb36c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c1336c)
#29 0x00000001088ea52c std::__1::enable_if<IsPartialSpecialization<clang::ClassTemplatePartialSpecializationDecl>::value, clang::Sema::TemplateDeductionResult>::type FinishTemplateArgumentDeduction<clang::ClassTemplatePartialSpecializationDecl>(clang::Sema&, clang::ClassTemplatePartialSpecializationDecl*, bool, clang::TemplateArgumentList const&, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, clang::sema::TemplateDeductionInfo&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10420252c)
#30 0x00000001088e9a14 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&)::$_0>(long) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104201a14)
#31 0x00000001081de594 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103af6594)
#32 0x00000001088934e4 clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1041ab4e4)
#33 0x00000001088f6f74 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10420ef74)
#34 0x00000001089aa1b4 void llvm::function_ref<void ()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*)::$_3>(long) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042c21b4)
#35 0x00000001081de594 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103af6594)
#36 0x0000000108999680 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042b1680)
#37 0x0000000108998f64 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042b0f64)
#38 0x0000000108256330 clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103b6e330)
#39 0x000000010849c8ec clang::Sema::BuildQualifiedDeclarationNameExpr(clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, bool, clang::Scope const*, clang::TypeSourceInfo**) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103db48ec)
#40 0x000000010890bfb8 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDependentScopeDeclRefExpr(clang::DependentScopeDeclRefExpr*, bool, clang::TypeSourceInfo**) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104223fb8)
#41 0x00000001089007d0 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042187d0)
#42 0x000000010890f36c clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformRequiresExpr(clang::RequiresExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10422736c)
#43 0x0000000108907564 (anonymous namespace)::TemplateInstantiator::TransformRequiresExpr(clang::RequiresExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10421f564)
#44 0x00000001088f90f0 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042110f0)
#45 0x0000000108300d98 calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7::operator()(clang::Expr const*) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18d98)
#46 0x0000000108300080 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18080)
#47 0x00000001082fb5ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c135ec)
#48 0x00000001082fb36c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c1336c)
#49 0x00000001087e8e50 clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104100e50)
#50 0x0000000108901b34 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104219b34)
#51 0x00000001088f90f0 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1042110f0)
#52 0x0000000108300d98 calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7::operator()(clang::Expr const*) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18d98)
#53 0x0000000108300080 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c18080)
#54 0x00000001082fb5ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c135ec)
#55 0x00000001082fb36c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c1336c)
#56 0x00000001082fd8e8 clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation, clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>, clang::ConstraintSatisfaction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103c158e8)
#57 0x0000000108894d98 clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl<clang::Sema::OriginalCallArg> const*, bool, llvm::function_ref<bool ()>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1041acd98)
#58 0x00000001088ecaac void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::$_4>(long) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104204aac)
#59 0x00000001081de594 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103af6594)
#60 0x0000000108896108 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1041ae108)
#61 0x0000000108772d38 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10408ad38)
#62 0x000000010877fb80 AddOverloadedCallCandidate(clang::Sema&, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104097b80)
#63 0x000000010877fa38 clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104097a38)
#64 0x000000010877fe28 clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x104097e28)
#65 0x000000010878010c clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10409810c)
#66 0x0000000108495fa0 clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103dadfa0)
#67 0x00000001084abe84 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103dc3e84)
#68 0x00000001080d4104 clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039ec104)
#69 0x00000001080d5108 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039ed108)
#70 0x00000001080d7880 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039ef880)
#71 0x00000001080d1bd0 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039e9bd0)
#72 0x00000001080a6078 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039be078)
#73 0x00000001080a3d28 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039bbd28)
#74 0x00000001080a322c clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039bb22c)
#75 0x00000001080a2e18 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039bae18)
#76 0x000000010812be98 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a43e98)
#77 0x000000010812a4cc clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a424cc)
#78 0x00000001081323b8 clang::Parser::ParseCompoundStatementBody(bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a4a3b8)
#79 0x0000000108133250 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a4b250)
#80 0x000000010814b864 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a63864)
#81 0x00000001080a457c clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039bc57c)
#82 0x000000010814abc0 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a62bc0)
#83 0x000000010814a548 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a62548)
#84 0x00000001081497b0 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a617b0)
#85 0x00000001080bd648 clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039d5648)
#86 0x00000001080bcec0 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039d4ec0)
#87 0x00000001080a2c40 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039bac40)
#88 0x0000000108149380 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a61380)
#89 0x0000000108147b18 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x103a5fb18)
#90 0x000000010809259c clang::ParseAST(clang::Sema&, bool, bool) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1039aa59c)
#91 0x00000001071c9638 clang::FrontendAction::Execute() (/Users/danakj/s/llvm/install-17/bin/clang-16+0x102ae1638)
#92 0x0000000107164af4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x102a7caf4)
#93 0x00000001072455d4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x102b5d5d4)
#94 0x00000001046f05b0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1000085b0)
#95 0x00000001046ee224 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x100006224)
#96 0x0000000106fddc10 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1>(long) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1028f5c10)
#97 0x000000010679b548 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1020b3548)
#98 0x0000000106fdd5e8 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1028f55e8)
#99 0x0000000106fae450 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1028c6450)
#100 0x0000000106fae680 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1028c6680)
#101 0x0000000106fc5a48 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x1028dda48)
#102 0x00000001046ed60c clang_main(int, char**, llvm::ToolContext const&) (/Users/danakj/s/llvm/install-17/bin/clang-16+0x10000560c)
#103 0x00000001046f8c30 main (/Users/danakj/s/llvm/install-17/bin/clang-16+0x100010c30)
#104 0x00000001a8357f28
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 78be5aebaaf068e2a1496ff885eb1281c3fafb6a)
Target: arm64-apple-darwin22.5.0
Thread model: posix
InstalledDir: /Users/danakj/s/llvm/install/bin
Here's a minimal repro that triggers this assert without __m128i involved. Just running clang with -std=c++20:
#include <concepts>
#include <stdint.h>
#include <cstddef>
template <class T>
concept EnumClass =
!requires(T t) {
{
[](std::underlying_type_t<T>) {}(t)
};
};
template <class To, class From>
struct TransmogrifyImpl;
template <class T, EnumClass F>
struct TransmogrifyImpl<T, F>
{
constexpr static T mog_from(const F &from) noexcept
{
return static_cast<std::underlying_type_t<F>>(from);
}
};
int main()
{
return TransmogrifyImpl<uint32_t, std::byte>::mog_from(std::byte{0xff});
}
✗ /Users/danakj/s/llvm/install/bin/clang++ -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include/c++/v1 -isystem /Users/danakj/s/llvm/install-17/lib/clang/17/include -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include -std=c++20 -c /var/folders/nh/9_s29lyn4wv0z_3gp5plrsvr0000gn/T/transmogrify_unittest-1c3c9e.cpp
Assertion failed: (!isValueDependent() && "Expression evaluator can't be called on a dependent expression."), function EvaluateAsConstantExpr, file ExprConstant.cpp, line 15392.
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: /Users/danakj/s/llvm/install/bin/clang++ -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include/c++/v1 -isystem /Users/danakj/s/llvm/install-17/lib/clang/17/include -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk/usr/include -std=c++20 -c /var/folders/nh/9_s29lyn4wv0z_3gp5plrsvr0000gn/T/transmogrify_unittest-1c3c9e.cpp
1. /var/folders/nh/9_s29lyn4wv0z_3gp5plrsvr0000gn/T/transmogrify_unittest-1c3c9e.cpp:27:49: current parser token 'mog_from'
2. /var/folders/nh/9_s29lyn4wv0z_3gp5plrsvr0000gn/T/transmogrify_unittest-1c3c9e.cpp:26:1: parsing function body 'main'
3. /var/folders/nh/9_s29lyn4wv0z_3gp5plrsvr0000gn/T/transmogrify_unittest-1c3c9e.cpp:26:1: in compound statement ('{}')
^CStack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 clang-16 0x00000001042c01d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 clang-16 0x00000001042be784 llvm::sys::RunSignalHandlers() + 112
2 clang-16 0x00000001042bf9d0 llvm::sys::CleanupOnSignal(unsigned long) + 236
3 clang-16 0x0000000104227828 CrashRecoverySignalHandler(int) + 156
4 libsystem_platform.dylib 0x00000001a86dea24 _sigtramp + 56
5 libsystem_pthread.dylib 0x00000001a86afc28 pthread_kill + 288
6 libsystem_c.dylib 0x00000001a85bdae8 abort + 180
7 libsystem_c.dylib 0x00000001a85bce44 err + 0
8 clang-16 0x00000001080a6648 FastEvaluateAsRValue(clang::Expr const*, clang::Expr::EvalResult&, clang::ASTContext const&, bool&) (.cold.1) + 0
9 clang-16 0x00000001067b0b44 clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext const&, clang::Expr::ConstantExprKind) const + 1080
10 clang-16 0x0000000105d8c0ec clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) + 400
11 clang-16 0x0000000105d875ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) + 276
12 clang-16 0x0000000105d8736c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) + 584
13 clang-16 0x0000000106274e50 clang::Sema::CheckConceptTemplateId(clang::CXXScopeSpec const&, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::ConceptDecl*, clang::TemplateArgumentListInfo const*) + 524
14 clang-16 0x000000010638db34 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformConceptSpecializationExpr(clang::ConceptSpecializationExpr*) + 196
15 clang-16 0x00000001063850f0 clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) + 60
16 clang-16 0x0000000105d8cd98 calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7::operator()(clang::Expr const*) const + 756
17 clang-16 0x0000000105d8c080 clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::$_7&&) + 292
18 clang-16 0x0000000105d875ec CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) + 276
19 clang-16 0x0000000105d8736c clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) + 584
20 clang-16 0x000000010637652c std::__1::enable_if<IsPartialSpecialization<clang::ClassTemplatePartialSpecializationDecl>::value, clang::Sema::TemplateDeductionResult>::type FinishTemplateArgumentDeduction<clang::ClassTemplatePartialSpecializationDecl>(clang::Sema&, clang::ClassTemplatePartialSpecializationDecl*, bool, clang::TemplateArgumentList const&, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, clang::sema::TemplateDeductionInfo&) + 2820
21 clang-16 0x0000000106375a14 void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&)::$_0>(long) + 40
22 clang-16 0x0000000105c6a594 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) + 52
23 clang-16 0x000000010631f4e4 clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&) + 608
24 clang-16 0x0000000106382f74 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) + 636
25 clang-16 0x00000001064361b4 void llvm::function_ref<void ()>::callback_fn<clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*)::$_3>(long) + 56
26 clang-16 0x0000000105c6a594 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) + 52
27 clang-16 0x0000000106425680 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) + 1572
28 clang-16 0x0000000106424f64 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) + 32
29 clang-16 0x0000000105ce2330 clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) + 220
30 clang-16 0x0000000105dccf14 clang::Sema::getTypeName(clang::IdentifierInfo const&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec*, bool, bool, clang::OpaquePtr<clang::QualType>, bool, bool, bool, clang::ImplicitTypenameContext, clang::IdentifierInfo**) + 220
31 clang-16 0x0000000105bd96ac clang::Parser::TryAnnotateTypeOrScopeTokenAfterScopeSpec(clang::CXXScopeSpec&, bool, clang::ImplicitTypenameContext) + 264
32 clang-16 0x0000000105bd9fe0 clang::Parser::TryAnnotateTypeOrScopeToken(clang::ImplicitTypenameContext) + 220
33 clang-16 0x0000000105b63838 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) + 10236
34 clang-16 0x0000000105b5dbd0 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 236
35 clang-16 0x0000000105b5dacc clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 20
36 clang-16 0x0000000105bbc6f4 clang::Parser::ParseReturnStatement() + 280
37 clang-16 0x0000000105bb708c clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) + 2484
38 clang-16 0x0000000105bb64cc clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) + 300
39 clang-16 0x0000000105bbe3b8 clang::Parser::ParseCompoundStatementBody(bool) + 1508
40 clang-16 0x0000000105bbf250 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) + 180
41 clang-16 0x0000000105bd7864 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) + 2608
42 clang-16 0x0000000105b3057c clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 3156
43 clang-16 0x0000000105bd6bc0 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1032
44 clang-16 0x0000000105bd6548 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) + 380
45 clang-16 0x0000000105bd57b0 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) + 1580
46 clang-16 0x0000000105bd3b18 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 1492
47 clang-16 0x0000000105b1e59c clang::ParseAST(clang::Sema&, bool, bool) + 612
48 clang-16 0x0000000104c55638 clang::FrontendAction::Execute() + 100
49 clang-16 0x0000000104bf0af4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 796
50 clang-16 0x0000000104cd15d4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 552
51 clang-16 0x000000010217c5b0 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 2044
52 clang-16 0x000000010217a224 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) + 940
53 clang-16 0x0000000104a69c10 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_1>(long) + 32
54 clang-16 0x0000000104227548 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) + 164
55 clang-16 0x0000000104a695e8 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const + 228
56 clang-16 0x0000000104a3a450 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const + 804
57 clang-16 0x0000000104a3a680 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const + 120
58 clang-16 0x0000000104a51a48 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) + 340
59 clang-16 0x000000010217960c clang_main(int, char**, llvm::ToolContext const&) + 9404
60 clang-16 0x0000000102184c30 main + 32
61 dyld 0x00000001a8357f28 start + 2236
I think it's caused in this case by putting a concept in a partial specialization.
Assertion:
clang: /root/llvm-project/clang/lib/AST/ExprConstant.cpp:15370:
bool clang::Expr::EvaluateAsInt(clang::Expr::EvalResult&, const clang::ASTContext&, clang::Expr::SideEffectsKind, bool) const:
Assertion `!isValueDependent() && "Expression evaluator can't be called on a dependent expression."' failed.
The reduced version no longer crashes on trunk but the original does.
Extended Description
Hi all.
The small program emits one error then crashes. This crash only occurs in the current trunk of clang, so I guess clang should be more friendly and exit normally in this case?
$cat small.c
Thanks, Haoxin