Skip to content

Commit 01e990d

Browse files
authored
Merge pull request #1808 from fsestini/fix-po-graphs
[herd] Fix placement of po edges in dot graphs
2 parents 220e6c1 + 30bca9d commit 01e990d

7 files changed

Lines changed: 33 additions & 3 deletions

File tree

herd/Pretty.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ module Make (S:SemExtra.S) : S with module S = S = struct
827827
| E.IdSome ii ->
828828
fprintf chan "proc:%s poi:%i\\l"
829829
(Proc.pp ii.A.proc)
830-
ii.A.static_poi
830+
ii.A.program_order_index
831831

832832
(*
833833
This complex function is not meant to be used directly,

herd/dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(dirs :standard \ tests libdir)
1+
(dirs :standard \ tests/instructions libdir)
22

33
(rule
44
(copy ../Version.ml Version.ml))

herd/prettyUtils.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module Make(S : SemExtra.S) = struct
2323
let by_po =
2424
E.EventSet.fold
2525
(fun e k ->
26-
match E.static_poi e with
26+
match E.progorder_of e with
2727
| None -> k
2828
| Some poi ->
2929
let es_poi = IntMap.safe_find [] poi k in

herd/tests/other/dune

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
(cram
2+
(deps
3+
(source_tree libdir)
4+
%{bin:herd7}))

herd/tests/other/libdir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../libdir

herd/tests/other/poi-loop.t/run.t

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Check that po indices/edges are assigned correctly in the presence of loops (only checks the last (longest) execution graph)
2+
$ herd7 -set-libdir ../libdir -dumpes true -o - ./wait-flag.litmus | awk '/digraph G \{/ {block=""} {block = block $0 "\n"} END {printf "%s", block}' | grep -e 'poi' -e 'label="po"'
3+
eiid0 [label="a: W[x]=1\lproc:P0 poi:1\lSTR W1,[X0]", shape="box", color="blue"];
4+
eiid1 [label="b: R[x]=S1\lproc:P1 poi:0\lLDR W1,[X0]", shape="box", color="blue"];
5+
eiid11 [label="l: Branching(bcc)\lproc:P1 poi:1\lCBZ W1,.-4", shape="box", color="blue"];
6+
eiid2 [label="c: R[x]=S5\lproc:P1 poi:2\lLDR W1,[X0]", shape="box", color="blue"];
7+
eiid15 [label="p: Branching(bcc)\lproc:P1 poi:3\lCBZ W1,.-4", shape="box", color="blue"];
8+
eiid3 [label="d: R[x]=S9\lproc:P1 poi:4\lLDR W1,[X0]", shape="box", color="blue"];
9+
eiid19 [label="t: Branching(bcc)\lproc:P1 poi:5\lCBZ W1,.-4", shape="box", color="blue"];
10+
eiid20 [label="u: CutOff:L0\lproc:P1 poi:6\lLDR W1,[X0]", shape="box", color="blue"];
11+
/* the poi edges */
12+
eiid1 -> eiid11 [label="po", color="black", fontcolor="black"];
13+
eiid2 -> eiid15 [label="po", color="black", fontcolor="black"];
14+
eiid3 -> eiid19 [label="po", color="black", fontcolor="black"];
15+
eiid11 -> eiid2 [label="po", color="black", fontcolor="black"];
16+
eiid15 -> eiid3 [label="po", color="black", fontcolor="black"];
17+
eiid19 -> eiid20 [label="po", color="black", fontcolor="black"];
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
AArch64 wait-flag
2+
{
3+
0:X0=x; 1:X0=x;
4+
}
5+
P0 | P1 ;
6+
MOV W1,#1 |L0: ;
7+
STR W1,[X0] | LDR W1,[X0] ;
8+
| CBZ W1,L0 ;

0 commit comments

Comments
 (0)