summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-06-12 18:32:22 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-06-12 18:32:22 +0000
commitc69cc8425378a6ce08d6fe8dc0f468f7e983bc60 (patch)
treee6109f1c7ac2d5cacf92e08720198d4c277b8cf0 /clang/lib/Sema/SemaInit.cpp
parentfa880e6114c37a11bfe6cd1b600f2ba392c4fac8 (diff)
downloadbcm5719-llvm-c69cc8425378a6ce08d6fe8dc0f468f7e983bc60.tar.gz
bcm5719-llvm-c69cc8425378a6ce08d6fe8dc0f468f7e983bc60.zip
PR42220: take into account the possibility of aggregates with base
classes when checking an InitListExpr for lifetime extension. llvm-svn: 363188
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r--clang/lib/Sema/SemaInit.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index 25aff40f26f..1a1d9347985 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -6860,6 +6860,9 @@ static void visitLocalsRetainedByInitializer(IndirectLocalPath &Path,
RK_ReferenceBinding, Visit);
else {
unsigned Index = 0;
+ for (; Index < RD->getNumBases() && Index < ILE->getNumInits(); ++Index)
+ visitLocalsRetainedByInitializer(Path, ILE->getInit(Index), Visit,
+ RevisitSubinits);
for (const auto *I : RD->fields()) {
if (Index >= ILE->getNumInits())
break;
OpenPOWER on IntegriCloud