================
@@ -108,9 +108,14 @@ bool tryToFindPtrOrigin(
if (auto *decl = memberCall->getMethodDecl()) {
std::optional<bool> IsGetterOfRefCt = isGetterOfSafePtr(decl);
if (IsGetterOfRefCt && *IsGetterOfRefCt) {
- E = memberCall->getImplicitObjectArgument();
- if (StopAtFirstRefCountedObj) {
- return callback(E, true);
+ E = memberCall->getImplicitObjectArgument()->IgnoreParenCasts();
+ if (auto *DRE = dyn_cast<DeclRefExpr>(E)) {
+ if (auto *Decl = dyn_cast_or_null<VarDecl>(DRE->getDecl())) {
+ if (isa<ParmVarDecl>(Decl) || Decl->isLocalVarDecl()) {
+ if (StopAtFirstRefCountedObj)
+ return callback(E, true);
+ }
+ }
----------------
steakhal wrote:
I'm not exactly sure what do you want to achieve here, but I was surprised that
it's not enough to check the type of the declref to see if it's a reference to
const or not.
https://github.com/llvm/llvm-project/pull/184243
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits