Skip to content

Commit 508d7e2

Browse files
Use same invalidation strategy as base (References #1535)
1 parent b68df11 commit 508d7e2

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

src/analyses/apron/relationAnalysis.apron.ml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,10 +469,9 @@ struct
469469
| None -> None
470470
| Some st ->
471471
let ad = ask.f (Queries.ReachableFrom e) in
472-
if Queries.AD.is_top ad then
473-
None
474-
else
475-
Some (Queries.AD.join ad st)
472+
(* See https://github.com/goblint/analyzer/issues/1535 *)
473+
let ad = Queries.AD.remove UnknownPtr ad in
474+
Some (Queries.AD.join ad st)
476475
in
477476
List.fold_right reachable es (Some (Queries.AD.empty ()))
478477

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// SKIP PARAM: --set ana.activated[+] apron --set sem.int.signed_overflow assume_none
2+
#include <pthread.h>
3+
#include <goblint.h>
4+
#include <stdio.h>
5+
6+
int debug;
7+
int other;
8+
9+
int main() {
10+
int top;
11+
12+
// Needed so Base & DefExc doesn't find this information because it invalidates less
13+
if(top) {
14+
debug = 3;
15+
}
16+
17+
fscanf(stdin, "%d", &other);
18+
19+
// Fails as debug is invalidated
20+
__goblint_check(debug <= 3);
21+
return 0;
22+
}

0 commit comments

Comments
 (0)