aboutsummaryrefslogtreecommitdiff
path: root/src/relooper/test.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-06-07 14:00:12 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-06-07 14:00:43 -0700
commit507d73ae7b6964031c3090e9330fb50c009df7c1 (patch)
tree6df09f13bcbc13a4a92d794f1c44773d09feb182 /src/relooper/test.cpp
parentc6d56fb9da9eb2ecafadec1a951c98db17092b18 (diff)
remove break labels more aggresively, with a refined natural flow analysis1.4.9
Diffstat (limited to 'src/relooper/test.cpp')
-rw-r--r--src/relooper/test.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/relooper/test.cpp b/src/relooper/test.cpp
index 7da990b5..b2d500d7 100644
--- a/src/relooper/test.cpp
+++ b/src/relooper/test.cpp
@@ -231,5 +231,32 @@ int main() {
puts(buffer);
}
+
+ if (1) {
+ Relooper::SetOutputBuffer(buffer, sizeof(buffer));
+
+ printf("\n\n-- conditional loop --\n\n");
+
+ Block *b_a = new Block("// block A\n");
+ Block *b_b = new Block("// block B\n");
+ Block *b_c = new Block("// block C\n");
+
+ b_a->AddBranchTo(b_b, "shouldLoop()");
+ b_a->AddBranchTo(b_c, NULL);
+
+ b_b->AddBranchTo(b_b, "moarLoop()");
+ b_b->AddBranchTo(b_c, NULL);
+
+ Relooper r;
+ r.AddBlock(b_a);
+ r.AddBlock(b_b);
+ r.AddBlock(b_c);
+
+ r.Calculate(b_a);
+ printf("\n\n");
+ r.Render();
+
+ puts(buffer);
+ }
}