Skip to content

[18 regression] Assertion Path->Access <= UnprivilegedAccess && "access along best path worse than direct?" failed. #80435

Closed
@berolinux

Description

@berolinux

This happens while trying to build kcachegrind 24.01.95:

clang-18: /home/bero/abf/llvm/BUILD/llvm-project-release-18.x/clang/lib/Sema/SemaAccess.cpp:1410: AccessResult IsAccessible(Sema &, const EffectiveContext &, AccessTarget &): Assertion `Path->Access <= UnprivilegedAccess && "access along best path worse than direct?"' failed.
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: /usr/bin/clang-18 -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name testcase.ii -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/bero/repos/packaging-tools/plasma6-kcachegrind/BUILD/kcachegrind-24.01.95/libviews -fcoverage-compilation-dir=/home/bero/repos/packaging-tools/plasma6-kcachegrind/BUILD/kcachegrind-24.01.95/libviews -resource-dir /usr/lib64/clang/18 -fdeprecated-macro -ferror-limit 19 -fgnuc-version=13.1.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/testcase-7695c5.o -x c++-cpp-output testcase.ii
1.      <eof> parser at end of file
2.      testcase.ii:34:76: instantiating variable definition 'qt_incomplete_metaTypeArray<qt_meta_stringdata_CLASSCallGraphViewENDCLASS_t, QtPrivate::TypeAndForceComplete<CallGraphView, std::false_type>>'
3.      testcase.ii:34:76: instantiating variable definition 'qt_incomplete_metaTypeArray<qt_meta_stringdata_CLASSCallGraphViewENDCLASS_t, QtPrivate::TypeAndForceComplete<CallGraphView, std::false_type>>'
4.      testcase.ii:33:437: instantiating function definition 'QtPrivate::qTryMetaTypeInterfaceForType<qt_meta_stringdata_CLASSCallGraphViewENDCLASS_t, QtPrivate::TypeAndForceComplete<CallGraphView, std::false_type>>'
  #0 0x00007f90b618e916 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib64/libLLVM-18.so+0x458e916)
  #1 0x00007f90b618d58a llvm::sys::RunSignalHandlers() (/usr/lib64/libLLVM-18.so+0x458d58a)
  #2 0x00007f90b618e234 (/usr/lib64/libLLVM-18.so+0x458e234)
  #3 0x00007f90b1653690 (/usr/lib64/libc.so.6+0x3f690)
  #4 0x00007f90b16a2edc (/usr/lib64/libc.so.6+0x8eedc)
  #5 0x00007f90b16535e2 raise (/usr/lib64/libc.so.6+0x3f5e2)
  #6 0x00007f90b163c4ad abort (/usr/lib64/libc.so.6+0x284ad)
  #7 0x00007f90b163c3d5 (/usr/lib64/libc.so.6+0x283d5)
  #8 0x00007f90b164c052 (/usr/lib64/libc.so.6+0x38052)
  #9 0x00007f90bdb50afc (/usr/lib64/libclang-cpp.so.18+0x2350afc)
 #10 0x00007f90bdb4fafe (/usr/lib64/libclang-cpp.so.18+0x234fafe)
 #11 0x00007f90bdb53aa0 (/usr/lib64/libclang-cpp.so.18+0x2353aa0)
 #12 0x00007f90bdb55ffa clang::Sema::CheckLookupAccess(clang::LookupResult const&) (/usr/lib64/libclang-cpp.so.18+0x2355ffa)
 #13 0x00007f90bd07a29e (/usr/lib64/libclang-cpp.so.18+0x187a29e)
 #14 0x00007f90be0c8fcc clang::Sema::BuildMemberReferenceExpr(clang::Expr*, clang::QualType, clang::SourceLocation, bool, clang::CXXScopeSpec&, clang::SourceLocation, clang::NamedDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::Scope const*, clang::Sema::ActOnMemberAccessExtraArgs*) (/usr/lib64/libclang-cpp.so.18+0x28c8fcc)
 #15 0x00007f90be48b556 (/usr/lib64/libclang-cpp.so.18+0x2c8b556)
 #16 0x00007f90be472f08 (/usr/lib64/libclang-cpp.so.18+0x2c72f08)
 #17 0x00007f90be4b9d5d clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, clang::CXXRecordDecl*, clang::Qualifiers, bool) (/usr/lib64/libclang-cpp.so.18+0x2cb9d5d)
 #18 0x00007f90be516e30 clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl<clang::ParmVarDecl*>&) (/usr/lib64/libclang-cpp.so.18+0x2d16e30)
 #19 0x00007f90be515044 clang::TemplateDeclInstantiator::VisitFunctionDecl(clang::FunctionDecl*, clang::TemplateParameterList*, clang::TemplateDeclInstantiator::RewriteKind) (/usr/lib64/libclang-cpp.so.18+0x2d15044)
 #20 0x00007f90be4d3664 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/usr/lib64/libclang-cpp.so.18+0x2cd3664)
 #21 0x00007f90be40d062 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 ()>) (/usr/lib64/libclang-cpp.so.18+0x2c0d062)
 #22 0x00007f90be4100ab clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/usr/lib64/libclang-cpp.so.18+0x2c100ab)
 #23 0x00007f90be272fd4 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (/usr/lib64/libclang-cpp.so.18+0x2a72fd4)
 #24 0x00007f90be2a8ed5 (/usr/lib64/libclang-cpp.so.18+0x2aa8ed5)
 #25 0x00007f90be2a8caf clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) (/usr/lib64/libclang-cpp.so.18+0x2aa8caf)
 #26 0x00007f90be2a92de clang::Sema::buildOverloadedCallSet(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) (/usr/lib64/libclang-cpp.so.18+0x2aa92de)
 #27 0x00007f90be2a99c7 clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/usr/lib64/libclang-cpp.so.18+0x2aa99c7)
 #28 0x00007f90bdf1626f clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, bool) (/usr/lib64/libclang-cpp.so.18+0x271626f)
 #29 0x00007f90bdf74dff clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/usr/lib64/libclang-cpp.so.18+0x2774dff)
 #30 0x00007f90be487425 (/usr/lib64/libclang-cpp.so.18+0x2c87425)
 #31 0x00007f90be472f08 (/usr/lib64/libclang-cpp.so.18+0x2c72f08)
 #32 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #33 0x00007f90be49e842 (/usr/lib64/libclang-cpp.so.18+0x2c9e842)
 #34 0x00007f90be49cba5 (/usr/lib64/libclang-cpp.so.18+0x2c9cba5)
 #35 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #36 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #37 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #38 0x00007f90be49e842 (/usr/lib64/libclang-cpp.so.18+0x2c9e842)
 #39 0x00007f90be4b0635 (/usr/lib64/libclang-cpp.so.18+0x2cb0635)
 #40 0x00007f90be47fb22 (/usr/lib64/libclang-cpp.so.18+0x2c7fb22)
 #41 0x00007f90be49e79d (/usr/lib64/libclang-cpp.so.18+0x2c9e79d)
 #42 0x00007f90be49cba5 (/usr/lib64/libclang-cpp.so.18+0x2c9cba5)
 #43 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #44 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #45 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #46 0x00007f90be49e842 (/usr/lib64/libclang-cpp.so.18+0x2c9e842)
 #47 0x00007f90be4b0635 (/usr/lib64/libclang-cpp.so.18+0x2cb0635)
 #48 0x00007f90be3fdba4 (/usr/lib64/libclang-cpp.so.18+0x2bfdba4)
 #49 0x00007f90be3fcac9 clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&) (/usr/lib64/libclang-cpp.so.18+0x2bfcac9)
 #50 0x00007f90be4bd62d clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/usr/lib64/libclang-cpp.so.18+0x2cbd62d)
 #51 0x00007f90be551080 (/usr/lib64/libclang-cpp.so.18+0x2d51080)
 #52 0x00007f90bdb3b359 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/usr/lib64/libclang-cpp.so.18+0x233b359)
 #53 0x00007f90be550abd clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/usr/lib64/libclang-cpp.so.18+0x2d50abd)
 #54 0x00007f90be54ff65 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/usr/lib64/libclang-cpp.so.18+0x2d4ff65)
 #55 0x00007f90bdbb70c3 clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*) (/usr/lib64/libclang-cpp.so.18+0x23b70c3)
 #56 0x00007f90bdf8c544 clang::Sema::BuildQualifiedDeclarationNameExpr(clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, bool, clang::Scope const*, clang::TypeSourceInfo**) (/usr/lib64/libclang-cpp.so.18+0x278c544)
 #57 0x00007f90be4b0ead (/usr/lib64/libclang-cpp.so.18+0x2cb0ead)
 #58 0x00007f90be49e79d (/usr/lib64/libclang-cpp.so.18+0x2c9e79d)
 #59 0x00007f90be49cba5 (/usr/lib64/libclang-cpp.so.18+0x2c9cba5)
 #60 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #61 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #62 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #63 0x00007f90be4b1700 clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) (/usr/lib64/libclang-cpp.so.18+0x2cb1700)
 #64 0x00007f90be33ec99 clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) (/usr/lib64/libclang-cpp.so.18+0x2b3ec99)
 #65 0x00007f90be49d097 (/usr/lib64/libclang-cpp.so.18+0x2c9d097)
 #66 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #67 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #68 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #69 0x00007f90be4b1700 clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName) (/usr/lib64/libclang-cpp.so.18+0x2cb1700)
 #70 0x00007f90be315db5 clang::Sema::CheckTemplateArgument(clang::NamedDecl*, clang::TemplateArgumentLoc&, clang::NamedDecl*, clang::SourceLocation, clang::SourceLocation, unsigned int, llvm::SmallVectorImpl<clang::TemplateArgument>&, llvm::SmallVectorImpl<clang::TemplateArgument>&, clang::Sema::CheckTemplateArgumentKind) (/usr/lib64/libclang-cpp.so.18+0x2b15db5)
 #71 0x00007f90be40cbf7 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 ()>) (/usr/lib64/libclang-cpp.so.18+0x2c0cbf7)
 #72 0x00007f90be4100ab clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/usr/lib64/libclang-cpp.so.18+0x2c100ab)
 #73 0x00007f90be272fd4 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (/usr/lib64/libclang-cpp.so.18+0x2a72fd4)
 #74 0x00007f90be271b84 (/usr/lib64/libclang-cpp.so.18+0x2a71b84)
 #75 0x00007f90be270f95 (/usr/lib64/libclang-cpp.so.18+0x2a70f95)
 #76 0x00007f90be26fc90 (/usr/lib64/libclang-cpp.so.18+0x2a6fc90)
 #77 0x00007f90be277110 (/usr/lib64/libclang-cpp.so.18+0x2a77110)
 #78 0x00007f90be286fb3 clang::Sema::AddMethodCandidate(clang::CXXMethodDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, llvm::MutableArrayRef<clang::ImplicitConversionSequence>, clang::OverloadCandidateParamOrder) (/usr/lib64/libclang-cpp.so.18+0x2a86fb3)
 #79 0x00007f90be29c4a2 clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, clang::OverloadCandidateParamOrder) (/usr/lib64/libclang-cpp.so.18+0x2a9c4a2)
 #80 0x00007f90be29db96 clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, clang::OverloadCandidateParamOrder) (/usr/lib64/libclang-cpp.so.18+0x2a9db96)
 #81 0x00007f90be2acdff clang::Sema::LookupOverloadedBinOp(clang::OverloadCandidateSet&, clang::OverloadedOperatorKind, clang::UnresolvedSetImpl const&, llvm::ArrayRef<clang::Expr*>, bool) (/usr/lib64/libclang-cpp.so.18+0x2aacdff)
 #82 0x00007f90be2ad37c clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::UnresolvedSetImpl const&, clang::Expr*, clang::Expr*, bool, bool, clang::FunctionDecl*) (/usr/lib64/libclang-cpp.so.18+0x2aad37c)
 #83 0x00007f90bdfcae60 (/usr/lib64/libclang-cpp.so.18+0x27cae60)
 #84 0x00007f90be48d310 (/usr/lib64/libclang-cpp.so.18+0x2c8d310)
 #85 0x00007f90be472f08 (/usr/lib64/libclang-cpp.so.18+0x2c72f08)
 #86 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #87 0x00007f90be49e842 (/usr/lib64/libclang-cpp.so.18+0x2c9e842)
 #88 0x00007f90be49cba5 (/usr/lib64/libclang-cpp.so.18+0x2c9cba5)
 #89 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #90 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #91 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #92 0x00007f90be49e842 (/usr/lib64/libclang-cpp.so.18+0x2c9e842)
 #93 0x00007f90be49cba5 (/usr/lib64/libclang-cpp.so.18+0x2c9cba5)
 #94 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
 #95 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
 #96 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
 #97 0x00007f90be4d3884 clang::TemplateDeclInstantiator::VisitVarTemplateSpecializationDecl(clang::VarTemplateDecl*, clang::VarDecl*, clang::TemplateArgumentListInfo const&, llvm::ArrayRef<clang::TemplateArgument>, clang::VarTemplateSpecializationDecl*) (/usr/lib64/libclang-cpp.so.18+0x2cd3884)
 #98 0x00007f90be5210a4 clang::Sema::BuildVarTemplateInstantiation(clang::VarTemplateDecl*, clang::VarDecl*, clang::TemplateArgumentList const&, clang::TemplateArgumentListInfo const&, llvm::SmallVectorImpl<clang::TemplateArgument>&, clang::SourceLocation, llvm::SmallVector<clang::Sema::LateInstantiatedAttribute, 16u>*, clang::LocalInstantiationScope*) (/usr/lib64/libclang-cpp.so.18+0x2d210a4)
 #99 0x00007f90be359ef3 clang::Sema::CheckVarTemplateId(clang::VarTemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::TemplateArgumentListInfo const&) (/usr/lib64/libclang-cpp.so.18+0x2b59ef3)
#100 0x00007f90be3594f7 clang::Sema::CheckVarTemplateId(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::VarTemplateDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) (/usr/lib64/libclang-cpp.so.18+0x2b594f7)
#101 0x00007f90be359178 clang::Sema::BuildTemplateIdExpr(clang::CXXScopeSpec const&, clang::SourceLocation, clang::LookupResult&, bool, clang::TemplateArgumentListInfo const*) (/usr/lib64/libclang-cpp.so.18+0x2b59178)
#102 0x00007f90be47fba9 (/usr/lib64/libclang-cpp.so.18+0x2c7fba9)
#103 0x00007f90be3172a6 (/usr/lib64/libclang-cpp.so.18+0x2b172a6)
#104 0x00007f90be3134d5 clang::Sema::CheckTemplateArgumentList(clang::TemplateDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo&, bool, llvm::SmallVectorImpl<clang::TemplateArgument>&, llvm::SmallVectorImpl<clang::TemplateArgument>&, bool, bool*) (/usr/lib64/libclang-cpp.so.18+0x2b134d5)
#105 0x00007f90be33e71f clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo&) (/usr/lib64/libclang-cpp.so.18+0x2b3e71f)
#106 0x00007f90be49d097 (/usr/lib64/libclang-cpp.so.18+0x2c9d097)
#107 0x00007f90be47992d (/usr/lib64/libclang-cpp.so.18+0x2c7992d)
#108 0x00007f90be475ba0 (/usr/lib64/libclang-cpp.so.18+0x2c75ba0)
#109 0x00007f90be470421 (/usr/lib64/libclang-cpp.so.18+0x2c70421)
#110 0x00007f90be50d906 clang::TemplateDeclInstantiator::VisitVarDecl(clang::VarDecl*, bool, llvm::ArrayRef<clang::BindingDecl*>*) (/usr/lib64/libclang-cpp.so.18+0x2d0d906)
#111 0x00007f90be4d3664 clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/usr/lib64/libclang-cpp.so.18+0x2cd3664)
#112 0x00007f90be496149 (/usr/lib64/libclang-cpp.so.18+0x2c96149)
#113 0x00007f90be4996ed (/usr/lib64/libclang-cpp.so.18+0x2c996ed)
#114 0x00007f90be4befb6 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (/usr/lib64/libclang-cpp.so.18+0x2cbefb6)
#115 0x00007f90be4ce559 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (/usr/lib64/libclang-cpp.so.18+0x2cce559)
#116 0x00007f90be4d1492 clang::Sema::PerformPendingInstantiations(bool) (/usr/lib64/libclang-cpp.so.18+0x2cd1492)
#117 0x00007f90be4d2f29 clang::Sema::InstantiateVariableDefinition(clang::SourceLocation, clang::VarDecl*, bool, bool, bool) (/usr/lib64/libclang-cpp.so.18+0x2cd2f29)
#118 0x00007f90be4d15d8 clang::Sema::PerformPendingInstantiations(bool) (/usr/lib64/libclang-cpp.so.18+0x2cd15d8)
#119 0x00007f90bdb3eb82 clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (/usr/lib64/libclang-cpp.so.18+0x233eb82)
#120 0x00007f90bdb43175 clang::Sema::ActOnEndOfTranslationUnit() (/usr/lib64/libclang-cpp.so.18+0x2343175)
#121 0x00007f90bd143468 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib64/libclang-cpp.so.18+0x1943468)
#122 0x00007f90bd0454ce clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib64/libclang-cpp.so.18+0x18454ce)
#123 0x00007f90bf57d34b clang::FrontendAction::Execute() (/usr/lib64/libclang-cpp.so.18+0x3d7d34b)
#124 0x00007f90bf4e1799 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib64/libclang-cpp.so.18+0x3ce1799)
#125 0x00007f90bf5fc71a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib64/libclang-cpp.so.18+0x3dfc71a)
#126 0x000055cd198f9096 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-18+0x17096)
#127 0x000055cd198f4d4f (/usr/bin/clang-18+0x12d4f)
#128 0x000055cd198f361b clang_main(int, char**, llvm::ToolContext const&) (/usr/bin/clang-18+0x1161b)
#129 0x000055cd19903f96 main (/usr/bin/clang-18+0x21f96)
#130 0x00007f90b163dc0a (/usr/lib64/libc.so.6+0x29c0a)
#131 0x00007f90b163dcc5 __libc_start_main (/usr/lib64/libc.so.6+0x29cc5)
#132 0x000055cd198f0ed1 _start (/usr/bin/clang-18+0xeed1)

Unfortunately both creduce and cvise reduce it to invalid code.

     namespace std {
     struct      
      false_type   
     template<bool   >     struct enable_if     
     template<typename >     struct negation     ;
     template<typename... >     bool conjunction_v ;
     template<typename _Tp>     _Tp     __declval(long);
     template<typename _Tp>     auto declval()  -> decltype(__declval<_Tp>(0))
     template<typename , typename >     struct is_same     ;
     template<typename _Tp>     using decay_t = _Tp;
     template<bool _Cond>     using enable_if_t = enable_if<_Cond>::type;
     template<typename> using void_t = void;
   }
    namespace QTypeTraits {
   namespace detail {
  template<typename T> T const_reference();
  template<typename T> T reference();
  }
   template <typename, typename > struct has_ostream_operator ;
   template <typename Stream, typename T>  has_ostream_operator< T, std::void_t<decltype(detail::reference<Stream>() << detail::const_reference<T>())>>         has_ostream_operator_v ;
   }
    class QDebug;
    class QByteArrayView;
     namespace {
     template <typename _Container>          auto     data(_Container __cont) -> decltype(__cont.data)     template<typename > struct IsCompatibleByteArrayPointer       ;
   template <typename , typename = void> struct IsContainerCompatibleWithQByteArrayView ;
   template <typename T> struct IsContainerCompatibleWithQByteArrayView<T, ::enable_if_t<         std::conjunction_v<                 IsCompatibleByteArrayPointer<decltype(data(std:declval<T >()))>,                 std::negation<std::is_same<std::decay_t<T>, QByteArrayView>>>>> ;
   }
    class QByteArrayView {
   template <typename T>     using if_compatible_container =             std::enable_if_t<IsContainerCompatibleWithQByteArrayView<T>::valuebool>;
       template <typename Container, if_compatible_container<Container> = true>     QByteArrayView(Container ) ;
   };
    class QIODeviceBase {namespace QtPrivate {     class QMetaTypeInterface {}              template <typename T> struct MetatypeDecay { using type = T; };  template<typename T, bool = QTypeTraits::has_ostream_operator_v<QDebug, T>> struct QMetaTypeInterfaceWrapper ;         template<typename T, typename > struct TypeAndForceComplete {     using type = T        ; }  template<typename , typename TypeCompletePair>  QMetaTypeInterface qTryMetaTypeInterfaceForType() {     using T = TypeCompletePair:type;     using Ty = MetatypeDecay<T>::type        ;  QMetaTypeInterfaceWrapper<Ty>metaType      }  }
     template<typename Unique,typename... T> QtPrivate::QMetaTypeInterface qt_incomplete_metaTypeArray{      QtPrivate::qTryMetaTypeInterfaceForType<Unique, T>()... };
class QDebug : QIODeviceBase
    struct QDebug operator<<(QByteArrayView ) ;
}
class QWidget  {
    data;
};
class QFrame : QWidget
{};
class QAbstractScrollArea : QFrame
{};
class QGraphicsView : QAbstractScrollArea
{};
class TraceItemView
{
    data() };
class CallGraphView : QGraphicsView, TraceItemView;struct qt_meta_stringdata_CLASSCallGraphViewENDCLASS_t CallGraphViewstaticMetaObject {
    qt_incomplete_metaTypeArray<qt_meta_stringdata_CLASSCallGraphViewENDCLASS_t,
        QtPrivate::TypeAndForceComplete<CallGraphView, std::false_type>
    >} 

I'll try to come up with a more useful (not invalid) test case.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions