diff options
author | yronglin <yronglin777@gmail.com> | 2024-09-08 22:36:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-08 22:36:49 +0800 |
commit | 45c8766973bb3bb73dd8d996231e114dcf45df9f (patch) | |
tree | 6ed8a689d0df40dd9370ba77635b058e9583c705 /clang/lib/Parse/ParseDecl.cpp | |
parent | dec0781c8b06b1a5b8ad8646d299f643745a36d0 (diff) | |
download | llvm-45c8766973bb3bb73dd8d996231e114dcf45df9f.zip llvm-45c8766973bb3bb73dd8d996231e114dcf45df9f.tar.gz llvm-45c8766973bb3bb73dd8d996231e114dcf45df9f.tar.bz2 |
Reapply "[Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer" (#97308)
The PR reapply https://github.com/llvm/llvm-project/pull/92527.
Implemented CWG1815 and fixed the bugs mentioned in the comments of
https://github.com/llvm/llvm-project/pull/92527 and
https://github.com/llvm/llvm-project/pull/87933.
The reason why the original PR was reverted was that errors might occur
during the rebuild.
---------
Signed-off-by: yronglin <yronglin777@gmail.com>
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 61a1ca3d..1f56884 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -2509,8 +2509,9 @@ Parser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, // P2718R0 - Lifetime extension in range-based for loops. if (getLangOpts().CPlusPlus23) { - auto &LastRecord = Actions.ExprEvalContexts.back(); + auto &LastRecord = Actions.currentEvaluationContext(); LastRecord.InLifetimeExtendingContext = true; + LastRecord.RebuildDefaultArgOrDefaultInit = true; } if (getLangOpts().OpenMP) |