From 21a1fc4a4414f8511ae5e94965b4b72fd45751e0 Mon Sep 17 00:00:00 2001 From: Dibyendu Majumdar Date: Sat, 18 Nov 2023 17:20:24 +0000 Subject: Chapter6 Part 2 - Add further peephole based on dominator calc (#42) * #37 Add a Utils class to hold some useful functions. (#39) Move the name '$ctrl' to the ScopeNode * Fix maven pom Missing an explicit compiler target, so IntelliJ/Maven defaulted to version 5 ??? Remove explict ver 17 from Makefile. * Add immediate dominator peephole * A little more robust & simpler idom search * #40 Revise chapter 6 writeup to include a description of dominators * #40 Revise chapter 6 writeup to include a description of dominators --------- Co-authored-by: Cliff Click --- chapter06/docs/06-graph3-nonconst-peephole.gv | 56 +++++++++ chapter06/docs/06-graph3-nonconst-peephole.svg | 150 +++++++++++++++++++++++++ chapter06/docs/build-graphs.sh | 1 + 3 files changed, 207 insertions(+) create mode 100644 chapter06/docs/06-graph3-nonconst-peephole.gv create mode 100644 chapter06/docs/06-graph3-nonconst-peephole.svg (limited to 'chapter06/docs') diff --git a/chapter06/docs/06-graph3-nonconst-peephole.gv b/chapter06/docs/06-graph3-nonconst-peephole.gv new file mode 100644 index 00000000..f8e3e5fa --- /dev/null +++ b/chapter06/docs/06-graph3-nonconst-peephole.gv @@ -0,0 +1,56 @@ +digraph chapter06 { +/* +int a = 0; +int b = 1; +if( arg ) { + a = 2; + if( arg ) { b = 2; } + else b = 3; +} +return a+b; + +*/ + rankdir=BT; + ordering="in"; + concentrate="true"; + subgraph cluster_Nodes { + Start2 [ shape=plaintext label=< + + + +
Start
+ + +
$ctrlarg
+
> + ]; + Stop3 [ shape=box style=filled fillcolor=yellow label="Stop" ]; + Region22 [ shape=box style=filled fillcolor=yellow label="Region" ]; + If8 [ shape=plaintext label=< + + + +
If
+ + +
TrueFalse
+
> + ]; + Con_27 [ label="#4" ]; + Con_29 [ label="#1" ]; + Phi_ab30 [ style=filled fillcolor=lightyellow label="φ_ab" ]; + Return31 [ shape=box style=filled fillcolor=yellow label="Return" ]; + { rank=same; Region22;Phi_ab30;} + } + edge [ fontname=Helvetica, fontsize=8 ]; + Stop3 -> Return31[taillabel=0 color=red]; + Region22 -> If8:p0[taillabel=1 color=red]; + Region22 -> If8:p1[taillabel=2 color=red]; + If8 -> Start2:p0[taillabel=0 color=red]; + If8 -> Start2:p1[taillabel=1]; + Phi_ab30 -> Region22 [style=dotted taillabel=0]; + Phi_ab30 -> Con_27[taillabel=1]; + Phi_ab30 -> Con_29[taillabel=2]; + Return31 -> Region22[taillabel=0 color=red]; + Return31 -> Phi_ab30[taillabel=1]; +} diff --git a/chapter06/docs/06-graph3-nonconst-peephole.svg b/chapter06/docs/06-graph3-nonconst-peephole.svg new file mode 100644 index 00000000..c312ffc5 --- /dev/null +++ b/chapter06/docs/06-graph3-nonconst-peephole.svg @@ -0,0 +1,150 @@ + + + + + + +chapter06 + + +cluster_Nodes + + + + +Start2 + + +Start + + + +$ctrl + +arg + + + +Stop3 + +Stop + + + +Return31 + +Return + + + +Stop3->Return31 + + +0 + + + +Region22 + +Region + + + +If8 + + +If + + + +True + + +False + + + +Region22->If8:p0 + + +1 + + + +Region22->If8:p1 + + +2 + + + +If8->Start2:p0 + + +0 + + + +If8->Start2:p1 + + +1 + + + +Con_27 + +#4 + + + +Con_29 + +#1 + + + +Phi_ab30 + +φ_ab + + + +Phi_ab30->Region22 + + +0 + + + +Phi_ab30->Con_27 + + +1 + + + +Phi_ab30->Con_29 + + +2 + + + +Return31->Region22 + + +0 + + + +Return31->Phi_ab30 + + +1 + + + diff --git a/chapter06/docs/build-graphs.sh b/chapter06/docs/build-graphs.sh index d65826f4..5238dbfc 100644 --- a/chapter06/docs/build-graphs.sh +++ b/chapter06/docs/build-graphs.sh @@ -3,6 +3,7 @@ dot -Tsvg 06-graph1-post.gv > 06-graph1-post.svg dot -Tsvg 06-graph2-pre.gv > 06-graph2-pre.svg dot -Tsvg 06-graph2-post.gv > 06-graph2-post.svg dot -Tsvg 06-graph3-nonconst.gv > 06-graph3-nonconst.svg +dot -Tsvg 06-graph3-nonconst-peephole.gv > 06-graph3-nonconst-peephole.svg dot -Tsvg 06-graph3-true.gv > 06-graph3-true.svg dot -Tsvg 06-graph3-false.gv > 06-graph3-false.svg dot -Tsvg 06-graph4-nonconst.gv > 06-graph4-nonconst.svg -- cgit v1.2.3