support break and continue
commitfedb64a1a9980d30cfb991594967b5f39a30ecbe
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 5 Jan 2012 16:46:27 +0000 (5 17:46 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Sun, 3 Jun 2012 12:31:06 +0000 (3 14:31 +0200)
tree0e6c25ea5552747f950816d2cd15126420641f30
parenta9857f2d39a17f373030c652267f754832b9ad74
support break and continue

To be able to handle breaks and continues, we keep track of the condition
under which subsequent statements in the current loop iteration
or any statement in later loop iterations should not be executed.
These "skip" conditions may be either affine constraints or they
may be represented by the value of a virtual array.
The conditions, when introduced by a break or continue statement,
start out as universal constraints and get modified when the statement
is embedded in an if statement and/or combined with other statements.
These modified skip conditions may require the introduction of additional
virtual arrays to represent the combination of the skip conditions.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
30 files changed:
scan.cc
scan.h
scop.c
scop.h
tests/break.c [new file with mode: 0644]
tests/break.scop [new file with mode: 0644]
tests/break2.c [new file with mode: 0644]
tests/break2.scop [new file with mode: 0644]
tests/break3.c [new file with mode: 0644]
tests/break3.scop [new file with mode: 0644]
tests/break4.c [new file with mode: 0644]
tests/break4.scop [new file with mode: 0644]
tests/break5.c [new file with mode: 0644]
tests/break5.scop [new file with mode: 0644]
tests/continue.c [new file with mode: 0644]
tests/continue.scop [new file with mode: 0644]
tests/continue2.c [new file with mode: 0644]
tests/continue2.scop [new file with mode: 0644]
tests/continue3.c [new file with mode: 0644]
tests/continue3.scop [new file with mode: 0644]
tests/continue4.c [new file with mode: 0644]
tests/continue4.scop [new file with mode: 0644]
tests/continue5.c [new file with mode: 0644]
tests/continue5.scop [new file with mode: 0644]
tests/unsigned_break1.c [new file with mode: 0644]
tests/unsigned_break1.scop [new file with mode: 0644]
tests/unsigned_break2.c [new file with mode: 0644]
tests/unsigned_break2.scop [new file with mode: 0644]
tests/while_break.c [new file with mode: 0644]
tests/while_break.scop [new file with mode: 0644]