From fa7d56f72455828826d0ab7e1c142ca814e6e2aa Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Tue, 29 Sep 2026 10:10:53 -0700 Subject: Reverse edges --- chapter10b/README.md | 2 +- chapter10b/docs/example1.gv | 6 +- chapter10b/docs/example1.svg | 84 +++++++++++++------------- chapter10b/docs/example2a.gv | 6 +- chapter10b/docs/example2a.svg | 82 ++++++++++++------------- chapter10b/docs/example2b.gv | 8 +-- chapter10b/docs/example2b.svg | 136 +++++++++++++++++++++--------------------- chapter10b/docs/example2c.gv | 4 +- chapter10b/docs/example2c.svg | 50 ++++++++-------- 9 files changed, 189 insertions(+), 189 deletions(-) (limited to 'chapter10b') diff --git a/chapter10b/README.md b/chapter10b/README.md index d90a9da7..1779be50 100644 --- a/chapter10b/README.md +++ b/chapter10b/README.md @@ -27,7 +27,7 @@ load-after-store forwarding turn the return value into 42. ![Independent field dependencies](docs/example1.svg) -These are schematic dependency graphs, with arrows from definitions to uses. +These are schematic dependency graphs, with arrows from uses to their definitions. Control, pointer, and value edges are omitted when they do not explain memory. ## Equivalence-class aliasing diff --git a/chapter10b/docs/example1.gv b/chapter10b/docs/example1.gv index d1b2d456..2194ae8f 100644 --- a/chapter10b/docs/example1.gv +++ b/chapter10b/docs/example1.gv @@ -5,7 +5,7 @@ digraph Memory { X [label="Store x = 42"]; Y [label="Loop: Store y"]; L [label="Load x -> 42"]; - M -> X -> L [color=blue]; M -> Y [color=green]; - X -> MemMerge [color=blue]; Y -> MemMerge [color=green]; - MemMerge -> Return; L -> Return; + L -> X -> M [color=blue]; Y -> M [color=green]; + MemMerge -> X [color=blue]; MemMerge -> Y [color=green]; + Return -> MemMerge; Return -> L; } diff --git a/chapter10b/docs/example1.svg b/chapter10b/docs/example1.svg index bcd2a221..c441bc7b 100644 --- a/chapter10b/docs/example1.svg +++ b/chapter10b/docs/example1.svg @@ -12,80 +12,80 @@ M - -Initial memory + +Initial memory X - -Store x = 42 + +Store x = 42 - - -M->X - - + + +X->M + + Y - -Loop: Store y + +Loop: Store y - + -M->Y - - +Y->M + + L - -Load x -> 42 + +Load x -> 42 - - -X->L - - + + +L->X + + MemMerge - -MemMerge + +MemMerge - + -X->MemMerge - - +MemMerge->X + + - + -Y->MemMerge - - +MemMerge->Y + + Return - -Return + +Return - + -L->Return - - +Return->L + + - + -MemMerge->Return - - +Return->MemMerge + + diff --git a/chapter10b/docs/example2a.gv b/chapter10b/docs/example2a.gv index 50f7ec80..c2db6771 100644 --- a/chapter10b/docs/example2a.gv +++ b/chapter10b/docs/example2a.gv @@ -4,7 +4,7 @@ digraph Memory { M [label="Default memory"]; X [label="Store x"]; Y [label="Store y"]; - M -> X [color=blue]; M -> Y [color=green]; - M -> MemMerge [label="default"]; X -> MemMerge [label="x",color=blue]; - Y -> MemMerge [label="y",color=green]; MemMerge -> Return; + X -> M [color=blue]; Y -> M [color=green]; + MemMerge -> M [label="default"]; MemMerge -> X [label="x",color=blue]; + MemMerge -> Y [label="y",color=green]; Return -> MemMerge; } diff --git a/chapter10b/docs/example2a.svg b/chapter10b/docs/example2a.svg index 74cb48e0..fc95e08c 100644 --- a/chapter10b/docs/example2a.svg +++ b/chapter10b/docs/example2a.svg @@ -4,79 +4,79 @@ - - + + Memory - + M - -Default memory + +Default memory X - -Store x + +Store x - + -M->X - - +X->M + + Y - -Store y + +Store y - + -M->Y - - +Y->M + + MemMerge - -MemMerge + +MemMerge - + -M->MemMerge - - -default +MemMerge->M + + +default - + -X->MemMerge - - -x +MemMerge->X + + +x - + -Y->MemMerge - - -y +MemMerge->Y + + +y Return - -Return + +Return - + -MemMerge->Return - - +Return->MemMerge + + diff --git a/chapter10b/docs/example2b.gv b/chapter10b/docs/example2b.gv index 7ef10ec8..17b35910 100644 --- a/chapter10b/docs/example2b.gv +++ b/chapter10b/docs/example2b.gv @@ -3,8 +3,8 @@ digraph Memory { node [shape=box]; P [label="MemPhi(x)"]; B [label="BulkMemPhi(All except x)"]; - Left -> P [label="slice x",color=blue]; Right -> P [label="slice x",color=blue]; - Left -> B; Right -> B; - Region -> P [style=dashed]; Region -> B [style=dashed]; - P -> MemMerge [label="x",color=blue]; B -> MemMerge [label="default"]; + P -> Left [label="slice x",color=blue]; P -> Right [label="slice x",color=blue]; + B -> Left; B -> Right; + P -> Region [style=dashed]; B -> Region [style=dashed]; + MemMerge -> P [label="x",color=blue]; MemMerge -> B [label="default"]; } diff --git a/chapter10b/docs/example2b.svg b/chapter10b/docs/example2b.svg index fae583e6..67d74ea8 100644 --- a/chapter10b/docs/example2b.svg +++ b/chapter10b/docs/example2b.svg @@ -4,98 +4,98 @@ - - + + Memory - + P - -MemPhi(x) - - - -MemMerge - -MemMerge - - - -P->MemMerge - - -x - - - -B - -BulkMemPhi(All except x) - - - -B->MemMerge - - -default + +MemPhi(x) Left - -Left + +Left - + -Left->P - - -slice x - - - -Left->B - - +P->Left + + +slice x Right - -Right + +Right - + -Right->P - - -slice x - - - -Right->B - - +P->Right + + +slice x Region - -Region + +Region - + -Region->P - - +P->Region + + - + + +B + +BulkMemPhi(All except x) + + + +B->Left + + + + + +B->Right + + + + -Region->B - - +B->Region + + + + + +MemMerge + +MemMerge + + + +MemMerge->P + + +x + + + +MemMerge->B + + +default diff --git a/chapter10b/docs/example2c.gv b/chapter10b/docs/example2c.gv index fb827b3e..7a0562ee 100644 --- a/chapter10b/docs/example2c.gv +++ b/chapter10b/docs/example2c.gv @@ -4,7 +4,7 @@ digraph Memory { M [label="Prior x memory"]; L [label="Load p.x"]; S [label="Store p.x"]; - M -> L [color=blue]; M -> S [color=blue]; - L -> S [style=dashed,label="execute load first"]; + L -> M [color=blue]; S -> M [color=blue]; + S -> L [style=dashed,label="execute load first"]; Y [label="Store p.y: independent"]; } diff --git a/chapter10b/docs/example2c.svg b/chapter10b/docs/example2c.svg index d8e5cf96..1d51ccca 100644 --- a/chapter10b/docs/example2c.svg +++ b/chapter10b/docs/example2c.svg @@ -4,53 +4,53 @@ - - + + Memory - + M - -Prior x memory + +Prior x memory L - -Load p.x + +Load p.x - + -M->L - - +L->M + + S - -Store p.x + +Store p.x - + -M->S - - +S->M + + - + -L->S - - -execute load first +S->L + + +execute load first Y - -Store p.y: independent + +Store p.y: independent -- cgit v1.2.3