Skip to content

[clang] llvm_unreachable hit in InitializeNonTypeDiffVariables for NTTP of kind member object pointer #93068

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

Closed
3y3p4tch opened this issue May 22, 2024 · 4 comments · Fixed by #93265
Assignees
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" crash Prefer [crash-on-valid] or [crash-on-invalid]

Comments

@3y3p4tch
Copy link

branch: llvmorg-18.1.6

stack trace:

#0  0x00007ffff67a6387 in raise () from /lib64/libc.so.6
#1  0x00007ffff67a7a78 in abort () from /lib64/libc.so.6
#2  0x0000000002ebd770 in llvm::llvm_unreachable_internal (msg=0xb81817c "unknown ArgumentKind",
    file=0xb818135 "./llvm-project/clang/lib/AST/ASTDiagnostic.cpp", line=1249)
    at ./llvm-project/llvm/lib/Support/ErrorHandling.cpp:212
#3  0x0000000008f03b58 in (anonymous namespace)::TemplateDiff::InitializeNonTypeDiffVariables (Context=..., Iter=..., Default=0x7ffff1df1e98, Value=...,
    HasInt=@0x7ffffffeb3f6: false, IntType=..., IsNullPtr=@0x7ffffffeb3f4: false, E=@0x7ffffffeb438: 0x126d8680, VD=@0x7ffffffeb3f8: 0x0,
    NeedAddressOf=@0x7ffffffeb3f2: false) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1249
#4  0x0000000008f027cf in (anonymous namespace)::TemplateDiff::DiffNonTypes (this=0x7ffffffeb680, FromIter=..., ToIter=..., FromDefaultNonTypeDecl=0x7ffff1df1e98,
    ToDefaultNonTypeDecl=0x7ffff1df1e98) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1291
#5  0x0000000008f01d49 in (anonymous namespace)::TemplateDiff::DiffTemplate (this=0x7ffffffeb680, FromTST=0x7ffff078a750, ToTST=0x126d8920)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1382
#6  0x0000000008f00a4d in (anonymous namespace)::TemplateDiff::DiffTemplate (this=0x7ffffffeb680)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:2112
#7  0x0000000008effff7 in FormatTemplateTypeDiff (Context=..., FromType=..., ToType=..., PrintTree=false, PrintFromType=true, ElideType=true, ShowColors=true, OS=...)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:2141
#8  0x0000000008eff5bf in clang::FormatASTNodeDiagnosticArgument (Kind=clang::DiagnosticsEngine::ak_qualtype_pair, Val=140737488275352, Modifier=..., Argument=...,
    PrevArgs=..., Output=..., Cookie=0xe6859c0, QualTypeVals=...) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:409
#9  0x00000000031c0681 in clang::DiagnosticsEngine::ConvertArgToString (this=0xe66a930, Kind=clang::DiagnosticsEngine::ak_qualtype_pair, Val=140737488275352, Modifier=...,
    Argument=..., PrevArgs=..., Output=..., QualTypeVals=...) at ./llvm-project/clang/include/clang/Basic/Diagnostic.h:885
#10 0x00000000031bd0c5 in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, DiagStr=0xae1dd54 <(anonymous namespace)::StaticDiagInfoDescriptions+312396> "}0",
    DiagEnd=0xae1dd54 <(anonymous namespace)::StaticDiagInfoDescriptions+312396> "}0", OutStr=...)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:1108
#11 0x00000000031bda3f in HandleSelectModifier (DInfo=..., ValNo=0,
    Argument=0xae1dd11 <(anonymous namespace)::StaticDiagInfoDescriptions+312329> "%diff{ from returned value of type $ to function return type $|}1,2}0", ArgumentLen=91,
    OutStr=...) at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:628
#12 0x00000000031bc5f2 in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, DiagStr=0xae1dd56 <(anonymous namespace)::StaticDiagInfoDescriptions+312398> "",
    DiagEnd=0xae1dd56 <(anonymous namespace)::StaticDiagInfoDescriptions+312398> "", OutStr=...)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:983
#13 0x00000000031bbd8c in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, OutStr=...) at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:800
#14 0x00000000040376fa in clang::TextDiagnosticPrinter::HandleDiagnostic (this=0xe670df0, Level=clang::DiagnosticsEngine::Error, Info=...)
    at ./llvm-project/clang/lib/Frontend/TextDiagnosticPrinter.cpp:117
#15 0x00000000031cb333 in clang::DiagnosticIDs::EmitDiag (this=0xe668790, Diag=..., DiagLevel=clang::DiagnosticIDs::Error)
    at ./llvm-project/clang/lib/Basic/DiagnosticIDs.cpp:823
#16 0x00000000031cb1b3 in clang::DiagnosticIDs::ProcessDiag (this=0xe668790, Diag=...) at ./llvm-project/clang/lib/Basic/DiagnosticIDs.cpp:815
#17 0x00000000031bff69 in clang::DiagnosticsEngine::ProcessDiag (this=0xe66a930) at ./llvm-project/clang/include/clang/Basic/Diagnostic.h:1042
#18 0x00000000031bbbb7 in clang::DiagnosticsEngine::EmitCurrentDiagnostic (this=0xe66a930, Force=false)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:545
#19 0x000000000739e17d in clang::Sema::EmitCurrentDiagnostic (this=0xe6e1450, DiagID=4790) at ./llvm-project/clang/lib/Sema/Sema.cpp:1613
#20 0x00000000073ae946 in clang::Sema::ImmediateDiagBuilder::~ImmediateDiagBuilder (this=0x7ffffffeef30)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:1764
#21 0x00000000073bc2b9 in std::_Optional_payload_base<clang::Sema::ImmediateDiagBuilder>::_M_destroy (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:287
#22 0x00000000073bc277 in std::_Optional_payload_base<clang::Sema::ImmediateDiagBuilder>::_M_reset (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:318
#23 0x00000000073d4c85 in std::_Optional_base_impl<clang::Sema::ImmediateDiagBuilder, std::_Optional_base<clang::Sema::ImmediateDiagBuilder, false, false> >::_M_reset (
    this=0x7ffffffeef30) at /usr/include/c++/13.2.0/optional:468
#24 0x00000000073aeb05 in std::optional<clang::Sema::ImmediateDiagBuilder>::reset (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:1170
#25 0x000000000739e946 in clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder (this=0x7ffffffeef10)
    at ./llvm-project/clang/lib/Sema/Sema.cpp:1896
#26 0x0000000007ebf712 in clang::InitializationSequence::Diagnose (this=0x7fffffff0f20, S=..., Entity=..., Kind=..., Args=...)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:9681
#27 0x0000000007eba0a7 in clang::InitializationSequence::Perform (this=0x7fffffff0f20, S=..., Entity=..., Kind=..., Args=..., ResultType=0x0)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:8540
#28 0x0000000007ec61cd in clang::Sema::PerformCopyInitialization (this=0xe6e1450, Entity=..., EqualLoc=..., Init=..., TopLevelOfInitList=false, AllowExplicit=false)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:10568
#29 0x000000000818f921 in clang::Sema::PerformMoveOrCopyInitialization (this=0xe6e1450, Entity=..., NRInfo=..., Value=0x7ffff2c18298, SupressSimplerImplicitMoves=false)
    at ./llvm-project/clang/lib/Sema/SemaStmt.cpp:3567
#30 0x0000000008192e60 in clang::Sema::BuildReturnStmt (this=0xe6e1450, ReturnLoc=..., RetValExp=0x7ffff2c18298, AllowRecovery=false)
    at ./llvm-project/clang/lib/Sema/SemaStmt.cpp:4179
#31 0x00000000085a3ed3 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildReturnStmt (this=0x7fffffff57b8, ReturnLoc=..., Result=0x7ffff2c18298)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:1480
#32 0x000000000858d451 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformReturnStmt (this=0x7fffffff57b8, S=0x7ffff1f20828)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7962
#33 0x00000000085493f2 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt (this=0x7fffffff57b8, S=0x7ffff1f20828,
    SDK=clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::SDK_Discarded)
    at ./llvm-18.1.6-build/tools/clang/include/clang/AST/StmtNodes.inc:914
#34 0x0000000008564f36 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt (this=0x7fffffff57b8, S=0x7ffff1f20838, IsStmtExpr=false)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7544
#35 0x00000000085934f7 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt (this=0x7fffffff57b8, S=0x7ffff1f20838)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7526
#36 0x000000000854a58e in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt (this=0x7fffffff57b8, S=0x7ffff1f20838,
    SDK=clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::SDK_Discarded)
    at ./llvm-18.1.6-build/tools/clang/include/clang/AST/StmtNodes.inc:1498
#37 0x0000000008549173 in clang::Sema::SubstStmt (this=0xe6e1450, S=0x7ffff1f20838, TemplateArgs=...)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4098
#38 0x00000000085d7e8e in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x126f3ea0, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5185
#39 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#40 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff6320)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#41 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x12822dd8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#42 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#43 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff6a60)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#44 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef029880, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#45 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#46 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff71a0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#47 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef026ed0, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#48 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#49 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff78e0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#50 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef0248f8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#51 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#52 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8020)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#53 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef0292c8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#54 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#55 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8760)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#56 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef025b20, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#57 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#58 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8ea0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#59 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffee3c6578, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#60 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#61 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff95e0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#62 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x12a64260, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#63 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#64 0x000000000739ac1f in clang::Sema::ActOnEndOfTranslationUnitFragment (this=0xe6e1450, Kind=clang::Sema::Normal)
    at ./llvm-project/clang/lib/Sema/Sema.cpp:1088
#65 0x000000000739afe2 in clang::Sema::ActOnEndOfTranslationUnit (this=0xe6e1450) at ./llvm-project/clang/lib/Sema/Sema.cpp:1124
#66 0x00000000071f9197 in clang::Parser::ParseTopLevelDecl (this=0xe6ee240, Result=..., ImportState=@0x7fffffffac14: clang::Sema::ModuleImportState::NotACXX20Module)
    at ./llvm-project/clang/lib/Parse/Parser.cpp:727
#67 0x00000000071f410a in clang::ParseAST (S=..., PrintStats=false, SkipFunctionBodies=false) at ./llvm-project/clang/lib/Parse/ParseAST.cpp:163
#68 0x0000000003fd00fb in clang::ASTFrontendAction::ExecuteAction (this=0xe668a60) at ./llvm-project/clang/lib/Frontend/FrontendAction.cpp:1183
#69 0x0000000003d13cb6 in clang::CodeGenAction::ExecuteAction (this=0xe668a60) at ./llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1153
#70 0x0000000003fcfb1c in clang::FrontendAction::Execute (this=0xe668a60) at ./llvm-project/clang/lib/Frontend/FrontendAction.cpp:1069
#71 0x0000000003eef321 in clang::CompilerInstance::ExecuteAction (this=0xe65ecd0, Act=...)
    at ./llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057
#72 0x0000000004193c11 in clang::ExecuteCompilerInvocation (Clang=0xe65ecd0)
    at ./llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:272
#73 0x00000000013955df in cc1_main (Argv=..., Argv0=0xe656560 "/home/user/.local/bin/clang-18", MainAddr=0x1384960 <GetExecutablePath[abi:cxx11](char const*, bool)>)
    at ./llvm-project/clang/tools/driver/cc1_main.cpp:294
#74 0x00000000013860c2 in ExecuteCC1Tool (ArgV=..., ToolContext=...) at ./llvm-project/clang/tools/driver/driver.cpp:365
#75 0x0000000001387a7d in clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(llvm::SmallVectorImpl<char const*>&) const (this=0x7fffffffc868, ArgV=...)
    at ./llvm-project/clang/tools/driver/driver.cpp:504
#76 0x0000000001387a4d in llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(long, llvm::SmallVectorImpl<char const*>&) (callable=140737488341096, params=...) at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45
#77 0x0000000003d8aec1 in llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(llvm::SmallVectorImpl<char const*>&) const (this=0x7fffffffcce0,
    params=...) at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
#78 0x0000000003d87a08 in clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_0::operator()() const (this=0x7fffffffbe58) at ./llvm-project/clang/lib/Driver/Job.cpp:440
#79 0x0000000003d879d5 in 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::$_0>(long) (callable=140737488338520)
    at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45
#80 0x0000000001cb2009 in llvm::function_ref<void ()>::operator()() const (this=0x7fffffffbe18)
    at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
#81 0x0000000002eb500b in llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (this=0x7fffffffbe98, Fn=...)
    at ./llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426
#82 0x0000000003d8736b in clang::driver::CC1Command::Execute (this=0xe65f120, Redirects=..., ErrMsg=0x7fffffffc380, ExecutionFailed=0x7fffffffc37f)
    at ./llvm-project/clang/lib/Driver/Job.cpp:440
#83 0x0000000003d2887a in clang::driver::Compilation::ExecuteCommand (this=0xe6595b0, C=..., FailingCommand=@0x7fffffffc478: 0x0, LogOnly=false)
    at ./llvm-project/clang/lib/Driver/Compilation.cpp:199
#84 0x0000000003d28a57 in clang::driver::Compilation::ExecuteJobs (this=0xe6595b0, Jobs=..., FailingCommands=..., LogOnly=false)
    at ./llvm-project/clang/lib/Driver/Compilation.cpp:253
#85 0x0000000003d42e22 in clang::driver::Driver::ExecuteCompilation (this=0x7fffffffc960, C=..., FailingCommands=...)
    at ./llvm-project/clang/lib/Driver/Driver.cpp:1918
#86 0x0000000001385b93 in clang_main (Argc=40, Argv=0x7fffffffe108, ToolContext=...) at ./llvm-project/clang/tools/driver/driver.cpp:540
#87 0x00000000013b93d5 in main (argc=40, argv=0x7fffffffe108) at ./llvm-18.1.6-build/tools/clang/tools/driver/clang-driver.cpp:17

additional Information:

(gdb) frame 3
(gdb) p Default->getNameAsString()
$1 = "memberObjPtr"
(gdb) p TA.getKind()
$2 = clang::TemplateArgument::StructuralValue

Here, my memberObjPtr is a NTTP declared as auto and is instantiated as a member object pointer. Unfortunately I have not identified a minimal test case for which this fails but I am willing to collaborate on this to identify the core issue. Please let me know what additional information I should share from the coredump.

@github-actions github-actions bot added the clang Clang issues not falling into any other category label May 22, 2024
@3y3p4tch
Copy link
Author

CC @cor3ntin @zyn0217

@EugeneZelenko EugeneZelenko added clang:frontend Language frontend issues, e.g. anything involving "Sema" crash Prefer [crash-on-valid] or [crash-on-invalid] and removed clang Clang issues not falling into any other category labels May 22, 2024
@llvmbot
Copy link
Member

llvmbot commented May 22, 2024

@llvm/issue-subscribers-clang-frontend

Author: Saurav Yadav (3y3p4tch)

branch: llvmorg-18.1.6

stack trace:

#<!-- -->0  0x00007ffff67a6387 in raise () from /lib64/libc.so.6
#<!-- -->1  0x00007ffff67a7a78 in abort () from /lib64/libc.so.6
#<!-- -->2  0x0000000002ebd770 in llvm::llvm_unreachable_internal (msg=0xb81817c "unknown ArgumentKind",
    file=0xb818135 "./llvm-project/clang/lib/AST/ASTDiagnostic.cpp", line=1249)
    at ./llvm-project/llvm/lib/Support/ErrorHandling.cpp:212
#<!-- -->3  0x0000000008f03b58 in (anonymous namespace)::TemplateDiff::InitializeNonTypeDiffVariables (Context=..., Iter=..., Default=0x7ffff1df1e98, Value=...,
    HasInt=@<!-- -->0x7ffffffeb3f6: false, IntType=..., IsNullPtr=@<!-- -->0x7ffffffeb3f4: false, E=@<!-- -->0x7ffffffeb438: 0x126d8680, VD=@<!-- -->0x7ffffffeb3f8: 0x0,
    NeedAddressOf=@<!-- -->0x7ffffffeb3f2: false) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1249
#<!-- -->4  0x0000000008f027cf in (anonymous namespace)::TemplateDiff::DiffNonTypes (this=0x7ffffffeb680, FromIter=..., ToIter=..., FromDefaultNonTypeDecl=0x7ffff1df1e98,
    ToDefaultNonTypeDecl=0x7ffff1df1e98) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1291
#<!-- -->5  0x0000000008f01d49 in (anonymous namespace)::TemplateDiff::DiffTemplate (this=0x7ffffffeb680, FromTST=0x7ffff078a750, ToTST=0x126d8920)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:1382
#<!-- -->6  0x0000000008f00a4d in (anonymous namespace)::TemplateDiff::DiffTemplate (this=0x7ffffffeb680)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:2112
#<!-- -->7  0x0000000008effff7 in FormatTemplateTypeDiff (Context=..., FromType=..., ToType=..., PrintTree=false, PrintFromType=true, ElideType=true, ShowColors=true, OS=...)
    at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:2141
#<!-- -->8  0x0000000008eff5bf in clang::FormatASTNodeDiagnosticArgument (Kind=clang::DiagnosticsEngine::ak_qualtype_pair, Val=140737488275352, Modifier=..., Argument=...,
    PrevArgs=..., Output=..., Cookie=0xe6859c0, QualTypeVals=...) at ./llvm-project/clang/lib/AST/ASTDiagnostic.cpp:409
#<!-- -->9  0x00000000031c0681 in clang::DiagnosticsEngine::ConvertArgToString (this=0xe66a930, Kind=clang::DiagnosticsEngine::ak_qualtype_pair, Val=140737488275352, Modifier=...,
    Argument=..., PrevArgs=..., Output=..., QualTypeVals=...) at ./llvm-project/clang/include/clang/Basic/Diagnostic.h:885
#<!-- -->10 0x00000000031bd0c5 in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, DiagStr=0xae1dd54 &lt;(anonymous namespace)::StaticDiagInfoDescriptions+312396&gt; "}0",
    DiagEnd=0xae1dd54 &lt;(anonymous namespace)::StaticDiagInfoDescriptions+312396&gt; "}0", OutStr=...)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:1108
#<!-- -->11 0x00000000031bda3f in HandleSelectModifier (DInfo=..., ValNo=0,
    Argument=0xae1dd11 &lt;(anonymous namespace)::StaticDiagInfoDescriptions+312329&gt; "%diff{ from returned value of type $ to function return type $|}1,2}0", ArgumentLen=91,
    OutStr=...) at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:628
#<!-- -->12 0x00000000031bc5f2 in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, DiagStr=0xae1dd56 &lt;(anonymous namespace)::StaticDiagInfoDescriptions+312398&gt; "",
    DiagEnd=0xae1dd56 &lt;(anonymous namespace)::StaticDiagInfoDescriptions+312398&gt; "", OutStr=...)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:983
#<!-- -->13 0x00000000031bbd8c in clang::Diagnostic::FormatDiagnostic (this=0x7ffffffed438, OutStr=...) at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:800
#<!-- -->14 0x00000000040376fa in clang::TextDiagnosticPrinter::HandleDiagnostic (this=0xe670df0, Level=clang::DiagnosticsEngine::Error, Info=...)
    at ./llvm-project/clang/lib/Frontend/TextDiagnosticPrinter.cpp:117
#<!-- -->15 0x00000000031cb333 in clang::DiagnosticIDs::EmitDiag (this=0xe668790, Diag=..., DiagLevel=clang::DiagnosticIDs::Error)
    at ./llvm-project/clang/lib/Basic/DiagnosticIDs.cpp:823
#<!-- -->16 0x00000000031cb1b3 in clang::DiagnosticIDs::ProcessDiag (this=0xe668790, Diag=...) at ./llvm-project/clang/lib/Basic/DiagnosticIDs.cpp:815
#<!-- -->17 0x00000000031bff69 in clang::DiagnosticsEngine::ProcessDiag (this=0xe66a930) at ./llvm-project/clang/include/clang/Basic/Diagnostic.h:1042
#<!-- -->18 0x00000000031bbbb7 in clang::DiagnosticsEngine::EmitCurrentDiagnostic (this=0xe66a930, Force=false)
    at ./llvm-project/clang/lib/Basic/Diagnostic.cpp:545
#<!-- -->19 0x000000000739e17d in clang::Sema::EmitCurrentDiagnostic (this=0xe6e1450, DiagID=4790) at ./llvm-project/clang/lib/Sema/Sema.cpp:1613
#<!-- -->20 0x00000000073ae946 in clang::Sema::ImmediateDiagBuilder::~ImmediateDiagBuilder (this=0x7ffffffeef30)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:1764
#<!-- -->21 0x00000000073bc2b9 in std::_Optional_payload_base&lt;clang::Sema::ImmediateDiagBuilder&gt;::_M_destroy (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:287
#<!-- -->22 0x00000000073bc277 in std::_Optional_payload_base&lt;clang::Sema::ImmediateDiagBuilder&gt;::_M_reset (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:318
#<!-- -->23 0x00000000073d4c85 in std::_Optional_base_impl&lt;clang::Sema::ImmediateDiagBuilder, std::_Optional_base&lt;clang::Sema::ImmediateDiagBuilder, false, false&gt; &gt;::_M_reset (
    this=0x7ffffffeef30) at /usr/include/c++/13.2.0/optional:468
#<!-- -->24 0x00000000073aeb05 in std::optional&lt;clang::Sema::ImmediateDiagBuilder&gt;::reset (this=0x7ffffffeef30)
    at /usr/include/c++/13.2.0/optional:1170
#<!-- -->25 0x000000000739e946 in clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder (this=0x7ffffffeef10)
    at ./llvm-project/clang/lib/Sema/Sema.cpp:1896
#<!-- -->26 0x0000000007ebf712 in clang::InitializationSequence::Diagnose (this=0x7fffffff0f20, S=..., Entity=..., Kind=..., Args=...)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:9681
#<!-- -->27 0x0000000007eba0a7 in clang::InitializationSequence::Perform (this=0x7fffffff0f20, S=..., Entity=..., Kind=..., Args=..., ResultType=0x0)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:8540
#<!-- -->28 0x0000000007ec61cd in clang::Sema::PerformCopyInitialization (this=0xe6e1450, Entity=..., EqualLoc=..., Init=..., TopLevelOfInitList=false, AllowExplicit=false)
    at ./llvm-project/clang/lib/Sema/SemaInit.cpp:10568
#<!-- -->29 0x000000000818f921 in clang::Sema::PerformMoveOrCopyInitialization (this=0xe6e1450, Entity=..., NRInfo=..., Value=0x7ffff2c18298, SupressSimplerImplicitMoves=false)
    at ./llvm-project/clang/lib/Sema/SemaStmt.cpp:3567
#<!-- -->30 0x0000000008192e60 in clang::Sema::BuildReturnStmt (this=0xe6e1450, ReturnLoc=..., RetValExp=0x7ffff2c18298, AllowRecovery=false)
    at ./llvm-project/clang/lib/Sema/SemaStmt.cpp:4179
#<!-- -->31 0x00000000085a3ed3 in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::RebuildReturnStmt (this=0x7fffffff57b8, ReturnLoc=..., Result=0x7ffff2c18298)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:1480
#<!-- -->32 0x000000000858d451 in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::TransformReturnStmt (this=0x7fffffff57b8, S=0x7ffff1f20828)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7962
#<!-- -->33 0x00000000085493f2 in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::TransformStmt (this=0x7fffffff57b8, S=0x7ffff1f20828,
    SDK=clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::SDK_Discarded)
    at ./llvm-18.1.6-build/tools/clang/include/clang/AST/StmtNodes.inc:914
#<!-- -->34 0x0000000008564f36 in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::TransformCompoundStmt (this=0x7fffffff57b8, S=0x7ffff1f20838, IsStmtExpr=false)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7544
#<!-- -->35 0x00000000085934f7 in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::TransformCompoundStmt (this=0x7fffffff57b8, S=0x7ffff1f20838)
    at ./llvm-project/clang/lib/Sema/TreeTransform.h:7526
#<!-- -->36 0x000000000854a58e in clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::TransformStmt (this=0x7fffffff57b8, S=0x7ffff1f20838,
    SDK=clang::TreeTransform&lt;(anonymous namespace)::TemplateInstantiator&gt;::SDK_Discarded)
    at ./llvm-18.1.6-build/tools/clang/include/clang/AST/StmtNodes.inc:1498
#<!-- -->37 0x0000000008549173 in clang::Sema::SubstStmt (this=0xe6e1450, S=0x7ffff1f20838, TemplateArgs=...)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4098
#<!-- -->38 0x00000000085d7e8e in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x126f3ea0, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5185
#<!-- -->39 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->40 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff6320)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->41 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x12822dd8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->42 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->43 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff6a60)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->44 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef029880, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->45 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->46 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff71a0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->47 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef026ed0, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->48 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->49 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff78e0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->50 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef0248f8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->51 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->52 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8020)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->53 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef0292c8, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->54 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->55 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8760)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->56 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffef025b20, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->57 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->58 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff8ea0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->59 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x7fffee3c6578, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->60 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->61 0x00000000086403d8 in clang::Sema::GlobalEagerInstantiationScope::perform (this=0x7fffffff95e0)
    at ./llvm-project/clang/include/clang/Sema/Sema.h:10149
#<!-- -->62 0x00000000085d8029 in clang::Sema::InstantiateFunctionDefinition (this=0xe6e1450, PointOfInstantiation=..., Function=0x12a64260, Recursive=true,
    DefinitionRequired=false, AtEndOfTU=true) at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5209
#<!-- -->63 0x00000000085da645 in clang::Sema::PerformPendingInstantiations (this=0xe6e1450, LocalOnly=false)
    at ./llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6444
#<!-- -->64 0x000000000739ac1f in clang::Sema::ActOnEndOfTranslationUnitFragment (this=0xe6e1450, Kind=clang::Sema::Normal)
    at ./llvm-project/clang/lib/Sema/Sema.cpp:1088
#<!-- -->65 0x000000000739afe2 in clang::Sema::ActOnEndOfTranslationUnit (this=0xe6e1450) at ./llvm-project/clang/lib/Sema/Sema.cpp:1124
#<!-- -->66 0x00000000071f9197 in clang::Parser::ParseTopLevelDecl (this=0xe6ee240, Result=..., ImportState=@<!-- -->0x7fffffffac14: clang::Sema::ModuleImportState::NotACXX20Module)
    at ./llvm-project/clang/lib/Parse/Parser.cpp:727
#<!-- -->67 0x00000000071f410a in clang::ParseAST (S=..., PrintStats=false, SkipFunctionBodies=false) at ./llvm-project/clang/lib/Parse/ParseAST.cpp:163
#<!-- -->68 0x0000000003fd00fb in clang::ASTFrontendAction::ExecuteAction (this=0xe668a60) at ./llvm-project/clang/lib/Frontend/FrontendAction.cpp:1183
#<!-- -->69 0x0000000003d13cb6 in clang::CodeGenAction::ExecuteAction (this=0xe668a60) at ./llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1153
#<!-- -->70 0x0000000003fcfb1c in clang::FrontendAction::Execute (this=0xe668a60) at ./llvm-project/clang/lib/Frontend/FrontendAction.cpp:1069
#<!-- -->71 0x0000000003eef321 in clang::CompilerInstance::ExecuteAction (this=0xe65ecd0, Act=...)
    at ./llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057
#<!-- -->72 0x0000000004193c11 in clang::ExecuteCompilerInvocation (Clang=0xe65ecd0)
    at ./llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:272
#<!-- -->73 0x00000000013955df in cc1_main (Argv=..., Argv0=0xe656560 "/home/user/.local/bin/clang-18", MainAddr=0x1384960 &lt;GetExecutablePath[abi:cxx11](char const*, bool)&gt;)
    at ./llvm-project/clang/tools/driver/cc1_main.cpp:294
#<!-- -->74 0x00000000013860c2 in ExecuteCC1Tool (ArgV=..., ToolContext=...) at ./llvm-project/clang/tools/driver/driver.cpp:365
#<!-- -->75 0x0000000001387a7d in clang_main(int, char**, llvm::ToolContext const&amp;)::$_0::operator()(llvm::SmallVectorImpl&lt;char const*&gt;&amp;) const (this=0x7fffffffc868, ArgV=...)
    at ./llvm-project/clang/tools/driver/driver.cpp:504
#<!-- -->76 0x0000000001387a4d in llvm::function_ref&lt;int (llvm::SmallVectorImpl&lt;char const*&gt;&amp;)&gt;::callback_fn&lt;clang_main(int, char**, llvm::ToolContext const&amp;)::$_0&gt;(long, llvm::SmallVectorImpl&lt;char const*&gt;&amp;) (callable=140737488341096, params=...) at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45
#<!-- -->77 0x0000000003d8aec1 in llvm::function_ref&lt;int (llvm::SmallVectorImpl&lt;char const*&gt;&amp;)&gt;::operator()(llvm::SmallVectorImpl&lt;char const*&gt;&amp;) const (this=0x7fffffffcce0,
    params=...) at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
#<!-- -->78 0x0000000003d87a08 in clang::driver::CC1Command::Execute(llvm::ArrayRef&lt;std::optional&lt;llvm::StringRef&gt; &gt;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;*, bool*) const::$_0::operator()() const (this=0x7fffffffbe58) at ./llvm-project/clang/lib/Driver/Job.cpp:440
#<!-- -->79 0x0000000003d879d5 in llvm::function_ref&lt;void ()&gt;::callback_fn&lt;clang::driver::CC1Command::Execute(llvm::ArrayRef&lt;std::optional&lt;llvm::StringRef&gt; &gt;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;*, bool*) const::$_0&gt;(long) (callable=140737488338520)
    at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45
#<!-- -->80 0x0000000001cb2009 in llvm::function_ref&lt;void ()&gt;::operator()() const (this=0x7fffffffbe18)
    at ./llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
#<!-- -->81 0x0000000002eb500b in llvm::CrashRecoveryContext::RunSafely(llvm::function_ref&lt;void ()&gt;) (this=0x7fffffffbe98, Fn=...)
    at ./llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426
#<!-- -->82 0x0000000003d8736b in clang::driver::CC1Command::Execute (this=0xe65f120, Redirects=..., ErrMsg=0x7fffffffc380, ExecutionFailed=0x7fffffffc37f)
    at ./llvm-project/clang/lib/Driver/Job.cpp:440
#<!-- -->83 0x0000000003d2887a in clang::driver::Compilation::ExecuteCommand (this=0xe6595b0, C=..., FailingCommand=@<!-- -->0x7fffffffc478: 0x0, LogOnly=false)
    at ./llvm-project/clang/lib/Driver/Compilation.cpp:199
#<!-- -->84 0x0000000003d28a57 in clang::driver::Compilation::ExecuteJobs (this=0xe6595b0, Jobs=..., FailingCommands=..., LogOnly=false)
    at ./llvm-project/clang/lib/Driver/Compilation.cpp:253
#<!-- -->85 0x0000000003d42e22 in clang::driver::Driver::ExecuteCompilation (this=0x7fffffffc960, C=..., FailingCommands=...)
    at ./llvm-project/clang/lib/Driver/Driver.cpp:1918
#<!-- -->86 0x0000000001385b93 in clang_main (Argc=40, Argv=0x7fffffffe108, ToolContext=...) at ./llvm-project/clang/tools/driver/driver.cpp:540
#<!-- -->87 0x00000000013b93d5 in main (argc=40, argv=0x7fffffffe108) at ./llvm-18.1.6-build/tools/clang/tools/driver/clang-driver.cpp:17

additional Information:

(gdb) frame 3
(gdb) p Default-&gt;getNameAsString()
$1 = "memberObjPtr"
(gdb) p TA.getKind()
$2 = clang::TemplateArgument::StructuralValue

Here, my memberObjPtr is a NTTP declared as auto and is instantiated as a member object pointer. Unfortunately I have not identified a minimal test case for which this fails but I am willing to collaborate on this to identify the core issue. Please let me know what additional information I should share from the coredump.

@zyn0217 zyn0217 added the incomplete Issue not complete (e.g. missing a reproducer, build arguments, etc.) label May 23, 2024
@3y3p4tch
Copy link
Author

3y3p4tch commented May 23, 2024

Minimal reproducible code:

 struct A {
   int x_;
 };
 
 struct B : A {};
 
 template <auto memberObjPtr>
 struct X {};
 
 int main () {
   X<&A::x_> x;
   X<static_cast<int B::*>(&A::x_)> y = x; // invalid conversion, clang crashes when generating diagnostic
   return 0;
 };

@EugeneZelenko EugeneZelenko removed the incomplete Issue not complete (e.g. missing a reproducer, build arguments, etc.) label May 23, 2024
@cor3ntin
Copy link
Contributor

@mizvekov You want to look at this one?

mizvekov added a commit that referenced this issue May 24, 2024
…he template differ

This was not implemented in #78041

This patch does not implement this fucntionality, it just falls back to the expression
when possible.

Otherwise, such as when dealing with canonical types to begin with,
this will just ignore the argument as if it wasn't even there.

Fixes #93068
@mizvekov mizvekov self-assigned this May 24, 2024
mizvekov added a commit that referenced this issue May 24, 2024
…he template differ

This was not implemented in #78041

This patch does not implement this fucntionality, it just falls back to the expression
when possible.

Otherwise, such as when dealing with canonical types to begin with,
this will just ignore the argument as if it wasn't even there.

Fixes #93068
mizvekov added a commit that referenced this issue May 24, 2024
…he template differ (#93265)

This was not implemented in
#78041 when StructuralValue
TemplateArguments were originally added.

This patch does not implement this functionality, it just falls back to
the expression when possible.

Otherwise, such as when dealing with canonical types to begin with, this
will just ignore the argument as if it wasn't even there.

Fixes #93068
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" crash Prefer [crash-on-valid] or [crash-on-invalid]
Projects
None yet
6 participants