From 43a22099d0f62f90306f47fa29471ca62b53eebd Mon Sep 17 00:00:00 2001 From: Tuowen Zhao Date: Wed, 12 Oct 2016 17:17:33 -0600 Subject: added lexical ordering --- src/transformations/loop.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/transformations/loop.cc') diff --git a/src/transformations/loop.cc b/src/transformations/loop.cc index d176981..96c0c43 100644 --- a/src/transformations/loop.cc +++ b/src/transformations/loop.cc @@ -466,16 +466,16 @@ void Loop::buildIS(std::vector &ir_tree,std::vector &lexical for (int j = 1; j <= num_dep_dim; j++) { EQ_Handle h = f_xform->add_EQ(); - h.update_coef(stmt[i].xform.output_var(2 * j), 1); - h.update_coef(stmt[i].xform.input_var(j), -1); + h.update_coef(stmt[loc].xform.output_var(2 * j), 1); + h.update_coef(stmt[loc].xform.input_var(j), -1); } for (int j = 1; j <= 2 * num_dep_dim + 1; j += 2) { EQ_Handle h = f_xform->add_EQ(); - h.update_coef(stmt[i].xform.output_var(j), 1); + h.update_coef(stmt[loc].xform.output_var(j), 1); h.update_const(-lexicalOrder[(j-1)/2]); } - stmt[i].xform.simplify(); + stmt[loc].xform.simplify(); // Update lexical ordering for next statement lexicalOrder[lexicalOrder.size()-1]++; break; @@ -484,8 +484,9 @@ void Loop::buildIS(std::vector &ir_tree,std::vector &lexical ir_tree[i]->payload = level; ctrls.push_back(ir_tree[i]); try { + lexicalOrder.push_back(0); buildIS(ir_tree[i]->children, lexicalOrder, ctrls, level +1); - lexicalOrder.emplace_back(lexicalOrder[lexicalOrder.size()-1] + 1); + lexicalOrder.pop_back(); } catch (chill::error::ir &e) { for (int j =0;jchildren.size(); ++j) delete ir_tree[i]->children[j]; -- cgit v1.2.3-70-g09d2