[PATCH] D148474: [Clang] Fix ResolveConstructorOverload to not select a conversion function if we are going use copy elision

Dimitry Andric via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 11 09:37:31 PDT 2023


dim requested changes to this revision.
dim added a comment.
This revision now requires changes to proceed.

FWIW, this fix works for the test cases I had via https://bugs.freebsd.org/269067 and https://github.com/llvm/llvm-project/issues/60182, but I got the following failure during check-all:

  ********************
  FAIL: Clang :: SemaCXX/cxx1z-copy-omission.cpp (15698 of 67299)
  ******************** TEST 'Clang :: SemaCXX/cxx1z-copy-omission.cpp' FAILED ********************
  Script:
  --
  : 'RUN: at line 1';   /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang -cc1 -internal-isystem /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/lib/clang/17/include -nostdsysteminc -std=c++1z -verify -Wno-unused /home/dim/src/llvm/llvm-project/clang/test/SemaCXX/cxx1z-copy-omission.cpp
  --
  Exit Code: 134
  
  Command Output (stderr):
  --
  unexpected deduction guide in instantiation stack
  UNREACHABLE executed at /home/dim/src/llvm/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:1067!
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.      Program arguments: /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang -cc1 -internal-isystem /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/lib/clang/17/include -nostdsysteminc -std=c++1z -verify -Wno-unused /home/dim/src/llvm/llvm-project/clang/test/SemaCXX/cxx1z-copy-omission.cpp
  1.      /home/dim/src/llvm/llvm-project/clang/test/SemaCXX/cxx1z-copy-omission.cpp:198:8: current parser token ';'
  2.      /home/dim/src/llvm/llvm-project/clang/test/SemaCXX/cxx1z-copy-omission.cpp:176:1: parsing namespace 'GH39319'
   #0 0x0000000002ca4727 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x2ca4727)
   #1 0x0000000002ca2508 llvm::sys::RunSignalHandlers() (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x2ca2508)
   #2 0x0000000002ca4f00 SignalHandler(int) Signals.cpp:0:0
   #3 0x0000000827a15a3e handle_signal /usr/src/lib/libthr/thread/thr_sig.c:0:3
   #4 0x0000000827a14ff9 thr_sighandler /usr/src/lib/libthr/thread/thr_sig.c:247:1
   #5 0x0000000826e18903 ([vdso]+0x2d3)
   #6 0x000000082dc3f97a __sys_thr_kill /usr/obj/usr/src/lib/libc/thr_kill.S:4:0
   #7 0x000000082dbb8954 __raise /usr/src/lib/libc/gen/raise.c:0:10
   #8 0x000000082dc693e9 abort /usr/src/lib/libc/stdlib/abort.c:73:17
   #9 0x0000000002c23b01 (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x2c23b01)
  #10 0x000000000590e986 clang::Sema::PrintInstantiationStack() (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x590e986)
  #11 0x000000000504555d clang::Sema::EmitCurrentDiagnostic(unsigned int) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x504555d)
  #12 0x00000000050464ea clang::Sema::ImmediateDiagBuilder::~ImmediateDiagBuilder() Sema.cpp:0:0
  #13 0x0000000005046668 clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x5046668)
  #14 0x00000000053f7c5b clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x53f7c5b)
  #15 0x0000000005920009 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
  #16 0x000000000591713d clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x591713d)
  #17 0x00000000059615e5 clang::TemplateDeclInstantiator::VisitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x59615e5)
  #18 0x000000000599c9a9 void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::$_0>(long) SemaTemplateInstantiateDecl.cpp:0:0
  #19 0x000000000503ec8e clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x503ec8e)
  #20 0x00000000059667a2 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x59667a2)
  #21 0x00000000057c6e6d clang::Sema::DeclareImplicitDeductionGuides(clang::TemplateDecl*, clang::SourceLocation) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x57c6e6d)
  #22 0x000000000562bc8d LookupDirect(clang::Sema&, clang::LookupResult&, clang::DeclContext const*) SemaLookup.cpp:0:0
  #23 0x0000000005627e5c CppNamespaceLookup(clang::Sema&, clang::LookupResult&, clang::ASTContext&, clang::DeclContext const*, (anonymous namespace)::UnqualUsingDirectiveSet&) SemaLookup.cpp:0:0
  #24 0x00000000056274ad clang::Sema::CppLookupName(clang::LookupResult&, clang::Scope*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x56274ad)
  #25 0x000000000562b4d0 clang::Sema::LookupName(clang::LookupResult&, clang::Scope*, bool, bool) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x562b4d0)
  #26 0x00000000051f037e clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x51f037e)
  #27 0x00000000051efc4b clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x51efc4b)
  #28 0x0000000004f81236 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f81236)
  #29 0x0000000004f7f9f2 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f7f9f2)
  #30 0x0000000004f11179 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f11179)
  #31 0x0000000004f10a78 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f10a78)
  #32 0x0000000004f0f80a clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f0f80a)
  #33 0x0000000004f58a37 clang::Parser::ParseInnerNamespace(llvm::SmallVector<clang::Parser::InnerNamespaceInfo, 4u> const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f58a37)
  #34 0x0000000004f581f8 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f581f8)
  #35 0x0000000004f7e414 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f7e414)
  #36 0x0000000004f0f370 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f0f370)
  #37 0x0000000004f0d3ff clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f0d3ff)
  #38 0x0000000004f0794e clang::ParseAST(clang::Sema&, bool, bool) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x4f0794e)
  #39 0x0000000003780c33 clang::FrontendAction::Execute() (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x3780c33)
  #40 0x0000000003704f2f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x3704f2f)
  #41 0x0000000003853750 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x3853750)
  #42 0x0000000001ad1f28 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x1ad1f28)
  #43 0x0000000001acd854 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
  #44 0x0000000001acc6ea clang_main(int, char**, llvm::ToolContext const&) (/home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang+0x1acc6ea)
  /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/tools/clang/test/SemaCXX/Output/cxx1z-copy-omission.cpp.script: line 1:   661 Abort trap              (core dumped) /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/bin/clang -cc1 -internal-isystem /home/dim/obj/llvmorg-17-init-17477-g3ab7ef28eebf-freebsd13-amd64-ninja-clang-rel-1/lib/clang/17/include -nostdsysteminc -std=c++1z -verify -Wno-unused /home/dim/src/llvm/llvm-project/clang/test/SemaCXX/cxx1z-copy-omission.cpp
  
  --
  
  ********************

Any idea what that might be?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148474/new/

https://reviews.llvm.org/D148474



More information about the cfe-commits mailing list