diff options
author | DonĂ¡t Nagy <donat.nagy@ericsson.com> | 2025-10-18 23:00:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-10-18 23:00:46 +0200 |
commit | 0f6f13bdccd3345522b7d38294a72b802b6ffc28 (patch) | |
tree | 8d323d0dc4d0534dd512d5df0967f91945aed173 /cross-project-tests/debuginfo-tests/dexter-tests | |
parent | 023b1f6a8ed79b9a0d415522dbb3032a5c5df791 (diff) | |
download | llvm-main.zip llvm-main.tar.gz llvm-main.tar.bz2 |
`CallEvent` instances have a reference to a state object instead having
separate data members for storing the arguments (as `SVal` instances),
the return value (as `SVal`, if available), the dynamic type information
and similar things.
Previously this state was publicly available, which meant that many
checker callbacks had two ways to access the state: either through the
`CallEvent` or through the `CheckerContext`. This redundancy is
inelegant and bugprone (e.g. the recent commit
6420da68972782c37c4f147409dadcb970583d9e fixed a situation where the
state attached to the `CallEvent` could be obsolete in `EvalCall` and
`PointerEscape` callbacks), so this commit limits access to the state
attached to a `CallEvent` and turns it into a protected implementation
detail.
In the future it may be a good idea to completely remove the state
instance from the `CallEvent` and explicitly store the few parts of the
state which are relevant for the call and do not change during the
evaluation of the call.
In theory this commit should be a non-functional change (because AFAIK
the `CallEvent` and `CheckerContext` provide the same state after the
recent fix), but there is a small chance that it fixes some bugs that I
do not know about.
---------
Co-authored-by: Artem Dergachev <noqnoqneo@gmail.com>
Diffstat (limited to 'cross-project-tests/debuginfo-tests/dexter-tests')
0 files changed, 0 insertions, 0 deletions