diff options
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 7d73e0890ec..847b935505a 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -5214,6 +5214,9 @@ static void performLifetimeExtension(Expr *Init, const ValueDecl *ExtendingD) { Init = const_cast<Expr *>( Init->skipRValueSubobjectAdjustments(CommaLHSs, Adjustments)); + if (CXXBindTemporaryExpr *BTE = dyn_cast<CXXBindTemporaryExpr>(Init)) + Init = BTE->getSubExpr(); + if (InitListExpr *ILE = dyn_cast<InitListExpr>(Init)) { if (ILE->initializesStdInitializerList() || ILE->getType()->isArrayType()) { // FIXME: If this is an InitListExpr which creates a std::initializer_list |