diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-05-05 17:37:33 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-06-22 18:22:35 +0000 |
commit | cbe9438cfe07adfbcdeafe8e363614f83b03a055 (patch) | |
tree | 8b7c146fa5d8db3284b398554c688c2404930c3a /contrib/llvm-project/clang/lib/Sema/SemaInit.cpp | |
parent | c3450ad127e94d3fa67ae337310e59c002f51bfc (diff) | |
parent | 727e049ae5985f129320069542bb57add1ba6096 (diff) |
Diffstat (limited to 'contrib/llvm-project/clang/lib/Sema/SemaInit.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Sema/SemaInit.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp b/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp index ddb2b5cf5cd1..99801a88e3ed 100644 --- a/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp +++ b/contrib/llvm-project/clang/lib/Sema/SemaInit.cpp @@ -5420,8 +5420,9 @@ static void TryOrBuildParenListInitialization( } else if (auto *RT = Entity.getType()->getAs<RecordType>()) { const CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl()); - auto BaseRange = map_range(RD->bases(), [&S](auto &base) { - return InitializedEntity::InitializeBase(S.getASTContext(), &base, false); + auto BaseRange = map_range(RD->bases(), [&](auto &base) { + return InitializedEntity::InitializeBase(S.getASTContext(), &base, false, + &Entity); }); auto FieldRange = map_range(RD->fields(), [](auto *field) { return InitializedEntity::InitializeMember(field); @@ -9180,6 +9181,8 @@ ExprResult InitializationSequence::Perform(Sema &S, /*VerifyOnly=*/false, &CurInit); if (CurInit.get() && ResultType) *ResultType = CurInit.get()->getType(); + if (shouldBindAsTemporary(Entity)) + CurInit = S.MaybeBindToTemporary(CurInit.get()); break; } } |