From 736c658c274404084b15b450b2ab72d0e7569586 Mon Sep 17 00:00:00 2001 From: Dibyendu Majumdar Date: Fri, 3 Nov 2023 21:21:54 +0000 Subject: Backport changes in Chapter 5 to previous chapters and update Chapter5 documentation (#34) * Backport changes from chapter 5 to older chapters (#30) * Fix wrong indent * Backport to chapter 4 * Backport to chapter 3 * Backport to chapter 2 * Backport to chapter 1 * Add if statement to comment (#32) * Update visuals for chapters 1,2 & 3. Reenable drawing of edges from constants to Start for these chapters. * Update visuals for chapters 4. Revise text to explain the labeling of edges in graphs and that we omit edge from Constant to Start nodes from chapter 4. * Add code snippets for if statement parsing and the duplication and merging of ScopeNodes. Explain how scopeNodes are duplicated and merged. * Add constant check to minus node (#31) * Fix closing root block with } (#33) * Backport fix closing root block with } to chapter 4 and 3 (#35) * Show use-def edge from Phi to Region as dotted edge. Add example of Phi peephole. Update visuals. Add more examples. * Fix visuals in chapter 1 and README in chapter 4. * Remove subheading * Adjust spaces --------- Co-authored-by: XmiliaH <45106915+XmiliaH@users.noreply.github.com> --- chapter03/docs/03-graph1.gv | 46 ++++++++++--------- chapter03/docs/03-graph1.svg | 93 ++++++++++++++++++++------------------ chapter03/docs/03-graph2.gv | 46 ++++++++++--------- chapter03/docs/03-graph2.svg | 105 +++++++++++++++++++++++-------------------- chapter03/docs/03-graph3.gv | 49 +++++++++++--------- chapter03/docs/03-graph3.svg | 105 +++++++++++++++++++++++-------------------- 6 files changed, 240 insertions(+), 204 deletions(-) (limited to 'chapter03/docs') diff --git a/chapter03/docs/03-graph1.gv b/chapter03/docs/03-graph1.gv index 5983f622..2bdca351 100644 --- a/chapter03/docs/03-graph1.gv +++ b/chapter03/docs/03-graph1.gv @@ -1,33 +1,39 @@ digraph chapter03 { +/* +int a=1; int b=2; int c=0; { int b=3; c=a+b; #showGraph; } return c; #showGraph; +*/ rankdir=BT; + ordering="in"; + concentrate="true"; subgraph cluster_Nodes { - Start1 [ shape=box style=filled fillcolor=yellow label="Start" ]; - Con_2 [ label="#1" ]; - Con_3 [ label="#2" ]; - Con_5 [ label="#3" ]; - Add6 [ label="Add" ]; + Start2 [ shape=box style=filled fillcolor=yellow label="Start" ]; + Con_3 [ label="#1" ]; + Con_4 [ label="#2" ]; + Con_6 [ label="#3" ]; + Add7 [ label="+" ]; } node [shape=plaintext]; - subgraph cluster_0 { - scope0 [label=< + subgraph cluster_Scope1_0 { + Scope1_0 [label=< - +
0abc
0abc
>]; - subgraph cluster_1 { - scope1 [label=< + subgraph cluster_Scope1_1 { + Scope1_1 [label=< - +
1b
1b
>]; } } - Con_2 -> Start1 [style=dotted]; - Con_3 -> Start1 [style=dotted]; - Con_5 -> Start1 [style=dotted]; - Add6 -> Con_2; - Add6 -> Con_5; + edge [ fontname=Helvetica, fontsize=8 ]; + Con_3 -> Start2[taillabel=0 style=dotted]; + Con_4 -> Start2[taillabel=0 style=dotted]; + Con_6 -> Start2[taillabel=0 style=dotted]; + Add7 -> Con_3[taillabel=1]; + Add7 -> Con_6[taillabel=2]; edge [style=dashed color=cornflowerblue]; - scope0:scope0_a -> Con_2; - scope0:scope0_b -> Con_3; - scope0:scope0_c -> Add6; - scope1:scope1_b -> Con_5; + Scope1_0:"Scope1_0_a" -> Con_3; + Scope1_0:"Scope1_0_b" -> Con_4; + Scope1_0:"Scope1_0_c" -> Add7; + Scope1_1:"Scope1_1_b" -> Con_6; } diff --git a/chapter03/docs/03-graph1.svg b/chapter03/docs/03-graph1.svg index 364cd42c..ab6f9600 100644 --- a/chapter03/docs/03-graph1.svg +++ b/chapter03/docs/03-graph1.svg @@ -14,77 +14,82 @@ -cluster_0 +cluster_Scope1_0 -cluster_1 +cluster_Scope1_1 - + -Start1 +Start2 Start - + -Con_2 +Con_3 #1 - + -Con_2->Start1 +Con_3->Start2 +0 - + -Con_3 +Con_4 #2 - + -Con_3->Start1 +Con_4->Start2 +0 - + -Con_5 +Con_6 #3 - + -Con_5->Start1 +Con_6->Start2 +0 - + -Add6 - -Add +Add7 + ++ - + -Add6->Con_2 - - +Add7->Con_3 + + +1 - + -Add6->Con_5 - - +Add7->Con_6 + + +2 - + -scope0 - +Scope1_0 + 0 @@ -94,36 +99,36 @@ c - + -scope0:scope0_a->Con_2 +Scope1_0:Scope1_0_a->Con_3 - + -scope0:scope0_b->Con_3 +Scope1_0:Scope1_0_b->Con_4 - + -scope0:scope0_c->Add6 - - +Scope1_0:Scope1_0_c->Add7 + + - + -scope1 - +Scope1_1 + 1 b - + -scope1:scope1_b->Con_5 +Scope1_1:Scope1_1_b->Con_6 diff --git a/chapter03/docs/03-graph2.gv b/chapter03/docs/03-graph2.gv index c6c55028..f570b13e 100644 --- a/chapter03/docs/03-graph2.gv +++ b/chapter03/docs/03-graph2.gv @@ -1,29 +1,35 @@ digraph chapter03 { +/* +int a=1; int b=2; int c=0; { int b=3; c=a+b; #showGraph; } return c; #showGraph; +*/ rankdir=BT; + ordering="in"; + concentrate="true"; subgraph cluster_Nodes { - Start1 [ shape=box style=filled fillcolor=yellow label="Start" ]; - Con_2 [ label="#1" ]; - Con_3 [ label="#2" ]; - Con_5 [ label="#3" ]; - Add6 [ label="Add" ]; - Return7 [ shape=box style=filled fillcolor=yellow label="Return" ]; + Start2 [ shape=box style=filled fillcolor=yellow label="Start" ]; + Con_3 [ label="#1" ]; + Con_4 [ label="#2" ]; + Con_6 [ label="#3" ]; + Add7 [ label="+" ]; + Return8 [ shape=box style=filled fillcolor=yellow label="Return" ]; } node [shape=plaintext]; - subgraph cluster_0 { - scope0 [label=< + subgraph cluster_Scope1_0 { + Scope1_0 [label=< - +
0abc
0abc
>]; } - Con_2 -> Start1 [style=dotted]; - Con_3 -> Start1 [style=dotted]; - Con_5 -> Start1 [style=dotted]; - Add6 -> Con_2; - Add6 -> Con_5; - Return7 -> Start1 [color=red]; - Return7 -> Add6; + edge [ fontname=Helvetica, fontsize=8 ]; + Con_3 -> Start2[taillabel=0 style=dotted]; + Con_4 -> Start2[taillabel=0 style=dotted]; + Con_6 -> Start2[taillabel=0 style=dotted]; + Add7 -> Con_3[taillabel=1]; + Add7 -> Con_6[taillabel=2]; + Return8 -> Start2[taillabel=0 color=red]; + Return8 -> Add7[taillabel=1]; edge [style=dashed color=cornflowerblue]; - scope0:scope0_a -> Con_2; - scope0:scope0_b -> Con_3; - scope0:scope0_c -> Add6; -} + Scope1_0:"Scope1_0_a" -> Con_3; + Scope1_0:"Scope1_0_b" -> Con_4; + Scope1_0:"Scope1_0_c" -> Add7; +} \ No newline at end of file diff --git a/chapter03/docs/03-graph2.svg b/chapter03/docs/03-graph2.svg index 4ab5a8b6..0a539c6a 100644 --- a/chapter03/docs/03-graph2.svg +++ b/chapter03/docs/03-graph2.svg @@ -14,91 +14,98 @@ -cluster_0 +cluster_Scope1_0 - + -Start1 +Start2 Start - + -Con_2 +Con_3 #1 - + -Con_2->Start1 +Con_3->Start2 +0 - + -Con_3 +Con_4 #2 - + -Con_3->Start1 +Con_4->Start2 +0 - + -Con_5 +Con_6 #3 - + -Con_5->Start1 +Con_6->Start2 +0 - + -Add6 - -Add +Add7 + ++ - + -Add6->Con_2 - - +Add7->Con_3 + + +1 - + -Add6->Con_5 - - +Add7->Con_6 + + +2 - + -Return7 - -Return +Return8 + +Return - + -Return7->Start1 - +Return8->Start2 + +0 - + -Return7->Add6 - - +Return8->Add7 + + +1 - + -scope0 - +Scope1_0 + 0 @@ -108,23 +115,23 @@ c - + -scope0:scope0_a->Con_2 +Scope1_0:Scope1_0_a->Con_3 - + -scope0:scope0_b->Con_3 +Scope1_0:Scope1_0_b->Con_4 - + -scope0:scope0_c->Add6 - - +Scope1_0:Scope1_0_c->Add7 + + diff --git a/chapter03/docs/03-graph3.gv b/chapter03/docs/03-graph3.gv index 717024e3..50cb6d27 100644 --- a/chapter03/docs/03-graph3.gv +++ b/chapter03/docs/03-graph3.gv @@ -1,32 +1,37 @@ digraph chapter03 { +/* +int x0=1; int y0=2; int x1=3; int y1=4; return (x0-x1)*(x0-x1) + (y0-y1)*(y0-y1); #showGraph; +*/ rankdir=BT; + ordering="in"; + concentrate="true"; subgraph cluster_Nodes { - Start1 [ shape=box style=filled fillcolor=yellow label="Start" ]; - Con_2 [ label="#1" ]; - Con_3 [ label="#2" ]; - Con_19 [ label="#8" ]; - Con_4 [ label="#3" ]; - Return20 [ shape=box style=filled fillcolor=yellow label="Return" ]; - Con_5 [ label="#4" ]; + Start2 [ shape=box style=filled fillcolor=yellow label="Start" ]; + Con_3 [ label="#1" ]; + Con_4 [ label="#2" ]; + Con_20 [ label="#8" ]; + Con_5 [ label="#3" ]; + Return21 [ shape=box style=filled fillcolor=yellow label="Return" ]; + Con_6 [ label="#4" ]; } node [shape=plaintext]; - subgraph cluster_0 { - scope0 [label=< + subgraph cluster_Scope1_0 { + Scope1_0 [label=< - +
0y0x0y1x1
0y0x0y1x1
>]; } - Con_2 -> Start1 [style=dotted]; - Con_3 -> Start1 [style=dotted]; - Con_19 -> Start1 [style=dotted]; - Con_4 -> Start1 [style=dotted]; - Return20 -> Start1 [color=red]; - Return20 -> Con_19; - Con_5 -> Start1 [style=dotted]; + edge [ fontname=Helvetica, fontsize=8 ]; + Con_3 -> Start2[taillabel=0 style=dotted]; + Con_4 -> Start2[taillabel=0 style=dotted]; + Con_20 -> Start2[taillabel=0 style=dotted]; + Con_5 -> Start2[taillabel=0 style=dotted]; + Return21 -> Start2[taillabel=0 color=red]; + Return21 -> Con_20[taillabel=1]; + Con_6 -> Start2[taillabel=0 style=dotted]; edge [style=dashed color=cornflowerblue]; - scope0:scope0_y0 -> Con_3; - scope0:scope0_x0 -> Con_2; - scope0:scope0_y1 -> Con_5; - scope0:scope0_x1 -> Con_4; + Scope1_0:"Scope1_0_y0" -> Con_4; + Scope1_0:"Scope1_0_x0" -> Con_3; + Scope1_0:"Scope1_0_y1" -> Con_6; + Scope1_0:"Scope1_0_x1" -> Con_5; } - diff --git a/chapter03/docs/03-graph3.svg b/chapter03/docs/03-graph3.svg index 3b720323..623bd902 100644 --- a/chapter03/docs/03-graph3.svg +++ b/chapter03/docs/03-graph3.svg @@ -14,96 +14,103 @@ -cluster_0 +cluster_Scope1_0 - + -Start1 +Start2 Start - + -Con_2 +Con_3 #1 - + -Con_2->Start1 +Con_3->Start2 +0 - + -Con_3 +Con_4 #2 - + -Con_3->Start1 +Con_4->Start2 +0 - + -Con_19 - -#8 +Con_20 + +#8 - + -Con_19->Start1 - - +Con_20->Start2 + + +0 - + -Con_4 +Con_5 #3 - + -Con_4->Start1 +Con_5->Start2 +0 - + -Return20 - -Return +Return21 + +Return - + -Return20->Start1 - - +Return21->Start2 + + +0 - + -Return20->Con_19 - - +Return21->Con_20 + + +1 - + -Con_5 +Con_6 #4 - + -Con_5->Start1 +Con_6->Start2 +0 - + -scope0 +Scope1_0 0 @@ -116,27 +123,27 @@ x1 - + -scope0:scope0_x0->Con_2 +Scope1_0:Scope1_0_x0->Con_3 - + -scope0:scope0_y0->Con_3 +Scope1_0:Scope1_0_y0->Con_4 - + -scope0:scope0_x1->Con_4 +Scope1_0:Scope1_0_x1->Con_5 - + -scope0:scope0_y1->Con_5 +Scope1_0:Scope1_0_y1->Con_6 -- cgit v1.2.3