[PATCH] D152246: [clang][ThreadSafety] Analyze known function pointer values
Aaron Puchert via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 20 17:09:21 PDT 2023
aaronpuchert added a comment.
In D152246#4484366 <https://reviews.llvm.org/D152246#4484366>, @tbaeder wrote:
> So, the problem with this (type of) analysis is that we don't have a perfect view of the (global) program state, right? The CFG is per-function, and any other function (etc.) might change a function pointer. And we don't even know its initial value. Correct? The CFG-based anaylsis is just not enough to reliably diagnose this sort of problem.
Exactly, the analysis is strictly intraprocedural. So we'll only see any value if initialization/assignment and call are in the same function. And if the value is uniquely determined, the question is why does the function do an indirect call at all? I could imagine this in something like a unit test, but these are not so interesting for static analysis.
So basically the code would need to look like this:
void f() __attribute__((requires_capability(mu)));
void g() {
void (*pf)() = f;
pf();
}
But why would someone write this instead of a direct call to `f`?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152246/new/
https://reviews.llvm.org/D152246
More information about the cfe-commits
mailing list