keep track of index expressions
commitdbee8c4cef03a943e830af0fe95e7448ef04542b
authorSven Verdoolaege <skimo@kotnet.org>
Mon, 17 Jun 2013 12:26:28 +0000 (17 14:26 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 27 Jul 2013 09:09:12 +0000 (27 11:09 +0200)
tree14e77af81a64fbdc28fc93678d5522874a0ae6b7
parent5b66910a21334fe58d4ddb7a628289644a573679
keep track of index expressions

Until now, we only kept track of an "access relation" that was used
(by outside users) both for dependence analysis and for printing statement
bodies.  For the latter purpose, an explicit function representation
through an "index expression" is more convenient as it can more closely
match the original code.  In particular, when passing arrays or array
slices to a function, an index expression can keep track of how many
indices were specified in the original code.

At this stage, index expressions and access relations usually contain
the same information so we may be duplicating effort with little gain.
In future, however, access relations and index expressions may diverge
further, in particular when we start keeping track of which elements
of an array are accessed by a function call.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
96 files changed:
emit.c
include/pet.h
parse.c
scan.cc
scop.c
scop.h
tests/QR.scop
tests/arg.scop
tests/break.scop
tests/break2.scop
tests/break3.scop
tests/break4.scop
tests/break5.scop
tests/cast.scop
tests/ceild.scop
tests/conditional_assignment.scop
tests/conditional_assignment2.scop
tests/continue.scop
tests/continue2.scop
tests/continue3.scop
tests/continue4.scop
tests/continue5.scop
tests/cuervo.scop
tests/data_dependent.scop
tests/data_dependent2.scop
tests/dec.scop
tests/dec2.scop
tests/dec3.scop
tests/dec4.scop
tests/decl.scop
tests/div_mod.scop
tests/dynamic_bound.scop
tests/dynamic_condition.scop
tests/empty_domain.scop
tests/filter.scop
tests/filter2.scop
tests/filter3.scop
tests/float.scop
tests/floord.scop
tests/floord2.scop
tests/for_while.scop
tests/for_while_dec.scop
tests/for_while_inc.scop
tests/for_while_overflow.scop
tests/for_while_unsigned.scop
tests/for_while_unsigned2.scop
tests/forward_substitution1.scop
tests/forward_substitution2.scop
tests/forward_substitution3.scop
tests/generic_condition.scop
tests/generic_condition2.scop
tests/implicit_condition.scop
tests/inc.scop
tests/inc2.scop
tests/inc3.scop
tests/inc4.scop
tests/inf.scop
tests/inf2.scop
tests/iterator_declaration.scop
tests/label.scop
tests/loop.scop
tests/loop2.scop
tests/loop3.scop
tests/loop4.scop
tests/loop5.scop
tests/loop_body.scop
tests/loop_body2.scop
tests/matmul.scop
tests/max.scop
tests/min.scop
tests/min2.scop
tests/mod.scop
tests/mod2.scop
tests/piecewise.scop
tests/piecewise2.scop
tests/propagate.scop
tests/quasi_affine.scop
tests/scalar.scop
tests/scalar_inc.scop
tests/shortcut1.scop
tests/shortcut2.scop
tests/static.scop
tests/ternary.scop
tests/tobi1.scop
tests/tobi2.scop
tests/unsigned1.scop
tests/unsigned2.scop
tests/unsigned3.scop
tests/unsigned_break1.scop
tests/unsigned_break2.scop
tests/wdp.scop
tests/while.scop
tests/while_affine.scop
tests/while_break.scop
tests/while_inc.scop
tests/while_overflow.scop