summaryrefslogtreecommitdiff
path: root/chapter06/docs/06-graph3-nonconst-peephole.gv
diff options
context:
space:
mode:
authorDibyendu Majumdar <dibyendumajumdar@users.noreply.github.com>2023-11-18 17:20:24 +0000
committerGitHub <noreply@github.com>2023-11-18 09:20:24 -0800
commit21a1fc4a4414f8511ae5e94965b4b72fd45751e0 (patch)
tree7ad90082de465c7b58668eaebc6586bb5417c2f1 /chapter06/docs/06-graph3-nonconst-peephole.gv
parent1a9cac97df063af82516ca35bde34fde62d24c56 (diff)
downloadSimple-21a1fc4a4414f8511ae5e94965b4b72fd45751e0.tar.gz
Simple-21a1fc4a4414f8511ae5e94965b4b72fd45751e0.zip
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 <cliffc@acm.org>
Diffstat (limited to 'chapter06/docs/06-graph3-nonconst-peephole.gv')
-rw-r--r--chapter06/docs/06-graph3-nonconst-peephole.gv56
1 files changed, 56 insertions, 0 deletions
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=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
+ <TR><TD BGCOLOR="yellow">Start</TD></TR>
+ <TR><TD>
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD PORT="p0" BGCOLOR="yellow">$ctrl</TD><TD PORT="p1">arg</TD></TR>
+ </TABLE>
+ </TD></TR>
+ </TABLE>>
+ ];
+ Stop3 [ shape=box style=filled fillcolor=yellow label="Stop" ];
+ Region22 [ shape=box style=filled fillcolor=yellow label="Region" ];
+ If8 [ shape=plaintext label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4">
+ <TR><TD BGCOLOR="yellow">If</TD></TR>
+ <TR><TD>
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD PORT="p0" BGCOLOR="yellow">True</TD><TD PORT="p1" BGCOLOR="yellow">False</TD></TR>
+ </TABLE>
+ </TD></TR>
+ </TABLE>>
+ ];
+ Con_27 [ label="#4" ];
+ Con_29 [ label="#1" ];
+ Phi_ab30 [ style=filled fillcolor=lightyellow label="&phi;_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];
+}