diff options
author | Nicholas Allegra <comexk@gmail.com> | 2019-09-19 23:00:31 +0000 |
---|---|---|
committer | Nicholas Allegra <comexk@gmail.com> | 2019-09-19 23:00:31 +0000 |
commit | 9dd57df26abfd2b7252fd4ce02d48f225930214e (patch) | |
tree | 5c62852ebe2464221d3debe3fb3a3fc0df108c95 /clang/lib/Analysis | |
parent | ccf8d5b8292afd91e811c6657d73682da66f46f5 (diff) | |
download | bcm5719-llvm-9dd57df26abfd2b7252fd4ce02d48f225930214e.tar.gz bcm5719-llvm-9dd57df26abfd2b7252fd4ce02d48f225930214e.zip |
[Consumed] Treat by-value class arguments as consuming by default, like rvalue refs.
Differential Revision: https://reviews.llvm.org/D67743
llvm-svn: 372361
Diffstat (limited to 'clang/lib/Analysis')
-rw-r--r-- | clang/lib/Analysis/Consumed.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Analysis/Consumed.cpp b/clang/lib/Analysis/Consumed.cpp index 17bc29ba883..cde753e8ec5 100644 --- a/clang/lib/Analysis/Consumed.cpp +++ b/clang/lib/Analysis/Consumed.cpp @@ -644,10 +644,10 @@ bool ConsumedStmtVisitor::handleCall(const CallExpr *Call, const Expr *ObjArg, continue; // Adjust state on the caller side. - if (isRValueRef(ParamType)) - setStateForVarOrTmp(StateMap, PInfo, consumed::CS_Consumed); - else if (ReturnTypestateAttr *RT = Param->getAttr<ReturnTypestateAttr>()) + if (ReturnTypestateAttr *RT = Param->getAttr<ReturnTypestateAttr>()) setStateForVarOrTmp(StateMap, PInfo, mapReturnTypestateAttrState(RT)); + else if (isRValueRef(ParamType) || isConsumableType(ParamType)) + setStateForVarOrTmp(StateMap, PInfo, consumed::CS_Consumed); else if (isPointerOrRef(ParamType) && (!ParamType->getPointeeType().isConstQualified() || isSetOnReadPtrType(ParamType))) |