diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-03-15 15:16:57 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-03-17 17:56:17 -0700 |
commit | dbb60d034c77c65aee16bc971fb0957838ca31d7 (patch) | |
tree | 1e7178605def46e2f12d0aef63142ebce29b9e70 /src | |
parent | b0794537c311ff38bd6e9e87e173861c88303b24 (diff) |
add another if testcase in relooper
Diffstat (limited to 'src')
-rw-r--r-- | src/relooper/test.cpp | 31 | ||||
-rw-r--r-- | src/relooper/test.txt | 18 |
2 files changed, 49 insertions, 0 deletions
diff --git a/src/relooper/test.cpp b/src/relooper/test.cpp index 78de9e64..9f3ddceb 100644 --- a/src/relooper/test.cpp +++ b/src/relooper/test.cpp @@ -404,5 +404,36 @@ int main() { puts(r.GetOutputBuffer()); } + + if (1) { + Relooper::MakeOutputBuffer(10); + + printf("\n\n-- If chain (optimized, lead to complex) --\n\n"); + + Block *b_a = new Block("// block A\n", NULL); + Block *b_b = new Block("// block B\n", NULL); + Block *b_c = new Block("// block C\n", NULL); + Block *b_d = new Block("// block D\n", NULL); + + b_a->AddBranchTo(b_b, "a == 10", NULL); + b_a->AddBranchTo(b_d, NULL, NULL); + + b_b->AddBranchTo(b_c, "b == 10", NULL); + b_b->AddBranchTo(b_d, NULL, NULL); + + b_c->AddBranchTo(b_c, "loop", NULL); + b_c->AddBranchTo(b_d, NULL, NULL); + + Relooper r; + r.AddBlock(b_a); + r.AddBlock(b_b); + r.AddBlock(b_c); + r.AddBlock(b_d); + + r.Calculate(b_a); + r.Render(); + + puts(r.GetOutputBuffer()); + } } diff --git a/src/relooper/test.txt b/src/relooper/test.txt index 7d79e037..d53aeeb1 100644 --- a/src/relooper/test.txt +++ b/src/relooper/test.txt @@ -399,3 +399,21 @@ } // block E + + +-- If chain (optimized, lead to complex) -- + + // block A + if (a == 10) { + // block B + if (b == 10) { + while(1) { + // block C + if (!(loop)) { + break; + } + } + } + } + // block D + |