From 30b974c03ef6bb8254ccfd296f0c732e2e4785e1 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra Date: Sun, 17 Jul 2016 07:44:38 -0400 Subject: [PATCH] Remove trivial note on loop order --- _posts/2016-07-16-detecting-loops.md | 7 ------- _posts/loop-order.gv | 21 --------------------- assets/loop-order.png | Bin 35635 -> 0 bytes 3 files changed, 28 deletions(-) delete mode 100644 _posts/loop-order.gv delete mode 100644 assets/loop-order.png diff --git a/_posts/2016-07-16-detecting-loops.md b/_posts/2016-07-16-detecting-loops.md index 0ae3334e..812eb5b2 100644 --- a/_posts/2016-07-16-detecting-loops.md +++ b/_posts/2016-07-16-detecting-loops.md @@ -83,12 +83,5 @@ the shared header case is detected as two nested loops as well: a loop is identified by a unique backedge, not a unique header [^2]. The analysis is weak in that these cases are indistinguishable from normal nested loops. -**Order of loops**: We don't have to do another pass to order the loops the way -we want and set parent-child relationships. Simply process the set of -statements in reverse post-order (or topo order). We then get loops in the order -A, B, C, D. - -![Loop order](/assets/loop-order.png) - [^1]: Hat tip to Sanjoy for pointing out the fifth case. [^2]: You might want to merge loops that share a header in a post-pass. diff --git a/_posts/loop-order.gv b/_posts/loop-order.gv deleted file mode 100644 index 8aada106..00000000 --- a/_posts/loop-order.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph { - node1; /* root */ - node1 -> node2; - node2 -> node3; - edge [label="loopA",color=red]; - node3 -> node2; - edge [label=""]; - node3 -> node4; - edge [label="loopB",color=red]; - node4 -> node1; - edge [label="",color=""]; - node4 -> node5; - node5 -> node6; - node6 -> node7; - edge [label="loopC",color=red]; - node7 -> node6; - edge [label="",color=""]; - node7 -> node8; - edge [label="loopD",color=red]; - node8 -> node5; -} diff --git a/assets/loop-order.png b/assets/loop-order.png deleted file mode 100644 index 347f14c9903486429f4e247923a5169afcb4e85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35635 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