@@ -30,7 +30,11 @@ private module Cached {
30
30
// We can't rely on `basicStoreStep` since `startInContent` might be used with
31
31
// a content that has no corresponding store.
32
32
exists ( TypeTrackerContent loadContents |
33
- basicLoadStep ( _, _, loadContents ) and
33
+ (
34
+ basicLoadStep ( _, _, loadContents )
35
+ or
36
+ basicLoadStoreStep ( _, _, loadContents , _)
37
+ ) and
34
38
compatibleContents ( content , loadContents )
35
39
)
36
40
}
@@ -42,7 +46,11 @@ private module Cached {
42
46
or
43
47
// As in MkTypeTracker, restrict `content` to those that might eventually match a store.
44
48
exists ( TypeTrackerContent storeContent |
45
- basicStoreStep ( _, _, storeContent ) and
49
+ (
50
+ basicStoreStep ( _, _, storeContent )
51
+ or
52
+ basicLoadStoreStep ( _, _, _, storeContent )
53
+ ) and
46
54
compatibleContents ( storeContent , content )
47
55
)
48
56
}
@@ -247,7 +255,7 @@ private predicate flowsToStoreStep(
247
255
/**
248
256
* Holds if `loadContent` is loaded from `nodeFrom` and written to `storeContent` of `nodeTo`.
249
257
*/
250
- predicate flowsToLoadStoreStep (
258
+ private predicate flowsToLoadStoreStep (
251
259
Node nodeFrom , TypeTrackingNode nodeTo , TypeTrackerContent loadContent ,
252
260
TypeTrackerContent storeContent
253
261
) {
0 commit comments