Summary: The impurity checker assumed that in pulse summary, all key addresses of PRE state should exist in POST state. However, the assumption is not always true. For example, ``` void foo(int x) { int y = x; // HERE } ``` At `HERE`, pulse's summary is ``` POST={ roots={ &x=v1 }; mem ={ v1 -> { * -> v4 } }; } PRE={ roots={ &x=v1 }; mem ={ v1 -> { * -> v4 }, v4 -> { } }; } ``` The `v4` entry exists only at `PRE`. Although the `v4` entry is luckily removed in the summary by the canonicalization in this example, basically there is no guarantee about the entry sets of PRE and POST. Reviewed By: jvillard Differential Revision: D26550338 fbshipit-source-id: 99a31cd43master
parent
96b8558b08
commit
02933d81ba
Loading…
Reference in new issue