wlei-llvm wrote:

Hi, here is the reduced repro (not perfect, but was as far as I can get), 
thanks!

```
namespace std
{
  template<typename _Tp>
    _Tp
    __declval(long);
  template<typename _Tp>
    auto declval() noexcept -> decltype(__declval<_Tp>(0));
  template<typename _From, typename _To>
    class __is_convertible_helper
    {
      template<typename _From1, typename _To1,
        typename = decltype(__test_aux(std::declval<_From1>()))>
 static int
 __test;
      typedef decltype(__test<_From, _To>0) type;
    };
  template<typename _From, typename _To>
    struct is_convertible
    : public __is_convertible_helper<_From, _To>::type
    ;
template <typename _Tp, typename _Up>
  inline constexpr bool is_same_v = __is_same(_Tp, _Up);
}
  enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
  static const _Lock_policy __default_lock_policy =
  _S_atomic;
  template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
    class __shared_ptr;
  template<typename _Yp, typename _Tp>
    struct __sp_compatible_with
    : is_convertible<_Yp*, _Tp*>::type
    ;
  template<typename _Tp, _Lock_policy _Lp>
    class __shared_ptr
    {
 using _SafeConv
   = typename enable_if::type;
      template<typename _Yp, typename _Res = void>
 using _Compatible = typename
   enable_if__sp_compatible_with<_Yp*, _Tp*>::value, _Res::type;
    public:
 __shared_ptr0 noexcept
 : _M_ptr0, _M_refcount0
      __shared_ptr0 noexcept = default;
      __shared_ptr& operator=0 noexcept = default;
      ~__shared_ptr0 = default;
      template<typename _Yp, typename = _Compatible<_Yp>>
 __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
    };
namespace storage {
class S ;
}
namespace storage 
template <typename T>
concept StatState =
    std::is_same_v<T, storage::S>;
namespace storage 
template <StatState StatState>
class Tracker;
template <StatState T = S>
std::shared_ptr<Tracker<T>> createTracker() ;
template <StatState T>
class Tracker {
 public:
  template <StatState K>
  std::shared_ptr<Tracker<K>> friend createTracker();
};
namespace storage 
class Pool {
 public:
  Pool() {
    g = createTracker();
  }
 private:
  std::shared_ptr<int> g;
};
void create0  () {
  auto tracker = createTracker();
}

```
please ignore the irrelevant syntax error, the real error is :
```
clang++ -ferror-limit=99999999 -std=gnu++20 -c test.cpp 

clang++: 
/home/wlei/local/upstream/llvm-project/clang/lib/AST/ExprConstant.cpp:16601: 
bool clang::Expr::EvaluateAsConstantExpr(EvalResult &, const ASTContext &, 
ConstantExprKind) const: Assertion `!isValueDependent() && "Expression 
evaluator can't be called on a dependent expression."' 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: /home/wlei/local/upstream/llvm-release/bin/clang++ 
-ferror-limit=99999999 -std=gnu++20 -c test.cpp
1.      test.cpp:78:32: current parser token ')'
2.      test.cpp:77:18: parsing function body 'create0'
3.      test.cpp:77:18: in compound statement ('{}')
 #0 0x00007fcf547fb128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
/home/wlei/local/upstream/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:13
 #1 0x00007fcf547f9040 llvm::sys::RunSignalHandlers() 
/home/wlei/local/upstream/llvm-project/llvm/lib/Support/Signals.cpp:106:18
 #2 0x00007fcf5473c7b6 (anonymous 
namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) 
/home/wlei/local/upstream/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
 #3 0x00007fcf5473c7b6 CrashRecoverySignalHandler(int) 
/home/wlei/local/upstream/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
 #4 0x00007fcf53e3e730 __restore_rt (/lib64/libc.so.6+0x3e730)
 #5 0x00007fcf53e8bacc __pthread_kill_implementation (/lib64/libc.so.6+0x8bacc)
 #6 0x00007fcf53e3e686 gsignal (/lib64/libc.so.6+0x3e686)
 #7 0x00007fcf53e28833 abort (/lib64/libc.so.6+0x28833)
 #8 0x00007fcf53e2875b _nl_load_domain.cold (/lib64/libc.so.6+0x2875b)
 #9 0x00007fcf53e373c6 (/lib64/libc.so.6+0x373c6)
#10 0x00007fcf523da5b1 
clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext 
const&, clang::Expr::ConstantExprKind) const 
/home/wlei/local/upstream/llvm-project/clang/lib/AST/ExprConstant.cpp:0:0
#11 0x00007fcf50f9b41d clang::ActionResult<clang::Expr*, true> 
calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, 
clang::NamedDecl const*, clang::SourceLocation, 
clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, 
clang::ConstraintSatisfaction&)::ConstraintEvaluator>(clang::Sema&, clang::Expr 
const*, clang::ConstraintSatisfaction&, 
calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, 
clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, 
clang::Expr const*, clang::ConstraintSatisfaction&)::ConstraintEvaluator 
const&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaConcept.cpp:389:71
#12 0x00007fcf50f941eb clang::ActionResult<clang::Expr*, true>::isInvalid() 
const 
/home/wlei/local/upstream/llvm-project/clang/include/clang/Sema/Ownership.h:199:41
#13 0x00007fcf50f941eb CheckConstraintSatisfaction(clang::Sema&, 
clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, 
llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList 
const&, clang::SourceRange, clang::ConstraintSatisfaction&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaConcept.cpp:600:13
#14 0x00007fcf50f93f6a 
clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, 
llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, 
clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, 
clang::ConstraintSatisfaction&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaConcept.cpp:658:7
#15 0x00007fcf50f974fe 
clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation,
 clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>, 
clang::ConstraintSatisfaction&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaConcept.cpp:1151:10
#16 0x00007fcf5176de46 
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 ()>) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:0:9
#17 0x00007fcf517e59b9 
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>)>)::$_2::operator()() const 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4647:5
#18 0x00007fcf517e59b9 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, 
clang::QualType, clang::Expr::Classification, llvm::function_ref<bool 
(llvm::ArrayRef<clang::QualType>)>)::$_2>(long) 
/home/wlei/local/upstream/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#19 0x00007fcf56794b4f 
clang::StackExhaustionHandler::runWithSufficientStackSpace(clang::SourceLocation,
 llvm::function_ref<void ()>) 
/home/wlei/local/upstream/llvm-project/clang/lib/Basic/StackExhaustionHandler.cpp:21:1
#20 0x00007fcf51770350 
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>)>) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp:4654:10
#21 0x00007fcf51615037 
clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, 
clang::DeclAccessPair, clang::TemplateArgumentListInfo*, 
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, 
clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaOverload.cpp:7788:14
#22 0x00007fcf516265d2 AddOverloadedCallCandidate(clang::Sema&, 
clang::DeclAccessPair, clang::TemplateArgumentListInfo*, 
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaOverload.cpp:13588:7
#23 0x00007fcf5162642c 
clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, 
llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaOverload.cpp:0:5
#24 0x00007fcf5162696e clang::Sema::getLangOpts() const 
/home/wlei/local/upstream/llvm-project/clang/include/clang/Sema/Sema.h:524:51
#25 0x00007fcf5162696e clang::Sema::buildOverloadedCallSet(clang::Scope*, 
clang::Expr*, clang::UnresolvedLookupExpr*, 
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, 
clang::OverloadCandidateSet*, clang::ActionResult<clang::Expr*, true>*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaOverload.cpp:13950:7
#26 0x00007fcf51626d8b clang::Sema::BuildOverloadedCallExpr(clang::Scope*, 
clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, 
llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, 
bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaOverload.cpp:14156:7
#27 0x00007fcf5119cddc clang::Sema::BuildCallExpr(clang::Scope*, clang::Expr*, 
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, 
clang::SourceLocation, clang::Expr*, bool, bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaExpr.cpp:6548:16
#28 0x00007fcf511b2d9b clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, 
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, 
clang::SourceLocation, clang::Expr*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Sema/SemaExpr.cpp:6434:7
#29 0x00007fcf531627ae 
clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, 
true>) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseExpr.cpp:2242:23
#30 0x00007fcf53164860 
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, 
clang::Parser::TypeCastState, bool, bool*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseExpr.cpp:1944:9
#31 0x00007fcf531603ef 
clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, 
clang::Parser::TypeCastState, bool, bool*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseExpr.cpp:710:20
#32 0x00007fcf531603ef 
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseExpr.cpp:184:20
#33 0x00007fcf5312d5eb 
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, 
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) 
/home/wlei/local/upstream/llvm-project/clang/include/clang/Parse/Parser.h:0:14
#34 0x00007fcf5312a7f2 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, 
clang::DeclaratorContext, clang::ParsedAttributes&, 
clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, 
clang::Parser::ForRangeInit*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseDecl.cpp:2550:7
#35 0x00007fcf53129977 
clang::Parser::ParseSimpleDeclaration(clang::DeclaratorContext, 
clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, 
bool, clang::Parser::ForRangeInit*, clang::SourceLocation*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseDecl.cpp:0:10
#36 0x00007fcf5312935d 
clang::Parser::ParseDeclaration(clang::DeclaratorContext, 
clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, 
clang::SourceLocation*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseDecl.cpp:0:0
#37 0x00007fcf531c77d6 
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
clang::ParsedAttributes&, clang::ParsedAttributes&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseStmt.cpp:0:16
#38 0x00007fcf531c5aa4 
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 
32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseStmt.cpp:125:20
#39 0x00007fcf531cf511 clang::Parser::ParseCompoundStatementBody(bool) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseStmt.cpp:1259:11
#40 0x00007fcf531d0362 clang::Parser::ParseFunctionStatementBody(clang::Decl*, 
clang::Parser::ParseScope&) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseStmt.cpp:2565:21
#41 0x00007fcf531ea59b 
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, 
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/Parser.cpp:0:0
#42 0x00007fcf5312b8e5 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, 
clang::DeclaratorContext, clang::ParsedAttributes&, 
clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, 
clang::Parser::ForRangeInit*) 
/home/wlei/local/upstream/llvm-project/clang/lib/Parse/ParseDecl.cpp:0:0
```



https://github.com/llvm/llvm-project/pull/114569
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to