[all-commits] [llvm/llvm-project] 40381d: [clang][dataflow] Re-land: Retrieve members from a...
Samira Bazuzi via All-commits
all-commits at lists.llvm.org
Tue Dec 5 03:09:46 PST 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 40381d12640932a4e8185d18e5a0da84b4e449c0
https://github.com/llvm/llvm-project/commit/40381d12640932a4e8185d18e5a0da84b4e449c0
Author: Samira Bazuzi <bazuzi at users.noreply.github.com>
Date: 2023-12-05 (Tue, 05 Dec 2023)
Changed paths:
M clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
M clang/unittests/Analysis/FlowSensitive/DataflowEnvironmentTest.cpp
Log Message:
-----------
[clang][dataflow] Re-land: Retrieve members from accessors called usi… (#74336)
…ng member pointers.
This initially landed with a broken test due to a mid-air collision with
a new requirement for Environment initialization before field modeling.
Have added that initialization in the test.
>From first landing:
getMethodDecl does not handle pointers to members and returns nullptr
for them. getMethodDecl contains a decade-plus-old FIXME to handle
pointers to members, but two approaches I looked at for fixing it are
more invasive or complex than simply swapping to getCalleeDecl.
The first, have getMethodDecl call getCalleeDecl, creates a large tree
of const-ness mismatches due to getMethodDecl returning a non-const
value while being a const member function and getCalleeDecl only being a
const member function when it returns a const value.
The second, implementing an AST walk to match how
CXXMemberCallExpr::getImplicitObjectArgument grabs the LHS of the binary
operator, is basically reimplementing Expr::getReferencedDeclOfCallee,
which is used by Expr::getCalleeDecl. We don't need another copy of that
code.
More information about the All-commits
mailing list