This patch adds an initial implementation for sign analysis, with the
following lattice (T: top, N: negative, Z: zero, P: positive, B: bottom):
T / | \ N Z P \ | / B
The lattice is implemented with BoolValue properties attached to other
Values.
Paths
| Differential D136668
[clang][dataflow] Add initial sign analysis ClosedPublic Authored by martong on Oct 25 2022, 2:04 AM.
Details Summary This patch adds an initial implementation for sign analysis, with the T / | \ N Z P \ | / B The lattice is implemented with BoolValue properties attached to other
Diff Detail
Event TimelineComment Actions Nice!! Just nits. At a high level, I'm a little concerned about this as a demo, since I wouldn't recommend this implementation in practice (for various reasons, e.g. I would encode with 2 booleans since there are only 3 values). But, I think this approach has the advantage of clarity over optimized approaches. It might be worth pointing this out in comments at places where you made a decision for purposes of clarity/readability, if any come to mind.
This revision is now accepted and ready to land.Oct 25 2022, 11:05 AM Comment Actions
Okay, thanks again for the review! I've changed the comments for the file, where I describe these reasons about using 3 booleans.
This revision was landed with ongoing or failed builds.Oct 26 2022, 6:20 AM Closed by commit rG93ce23adb548: [clang][dataflow] Add initial sign analysis (authored by martong). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 470801 clang/unittests/Analysis/FlowSensitive/CMakeLists.txt
clang/unittests/Analysis/FlowSensitive/SignAnalysisTest.cpp
|
please indicate ownership in comment