summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis
diff options
context:
space:
mode:
authorNicholas Allegra <comexk@gmail.com>2019-09-19 23:00:31 +0000
committerNicholas Allegra <comexk@gmail.com>2019-09-19 23:00:31 +0000
commit9dd57df26abfd2b7252fd4ce02d48f225930214e (patch)
tree5c62852ebe2464221d3debe3fb3a3fc0df108c95 /clang/lib/Analysis
parentccf8d5b8292afd91e811c6657d73682da66f46f5 (diff)
downloadbcm5719-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.cpp6
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)))
OpenPOWER on IntegriCloud