[GIT] ppl/ppl(master): Simplified implementation of method Grid:: reduce_reduced().

Module: ppl/ppl Branch: master Commit: 66e260f7483f86e3bbe79b32550f2402453a9fe8 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=66e260f7483f8...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Thu Feb 23 14:53:02 2012 +0100
Simplified implementation of method Grid::reduce_reduced(). While at it, got rid of a few implicit conversions changing signedness. Detected by ECLAIR service utypflag.
---
src/Grid.templates.hh | 40 +++++++++++++++++++--------------------- 1 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/src/Grid.templates.hh b/src/Grid.templates.hh index 539a5e9..8145c54 100644 --- a/src/Grid.templates.hh +++ b/src/Grid.templates.hh @@ -280,33 +280,31 @@ Grid::reduce_reduced(M& sys,
PPL_DIRTY_TEMP_COEFFICIENT(pivot_dim_half); pivot_dim_half = (pivot_dim + 1) / 2; - Dimension_Kind row_kind = sys_dim_kinds[dim]; - Dimension_Kind line_or_equality, virtual_kind; - int jump; - if (generators) { - line_or_equality = LINE; - virtual_kind = GEN_VIRTUAL; - jump = -1; - } - else { - line_or_equality = EQUALITY; - virtual_kind = CON_VIRTUAL; - jump = 1; - } + const Dimension_Kind row_kind = sys_dim_kinds[dim]; + const bool row_is_line_or_equality + = (row_kind == (generators ? LINE : EQUALITY));
PPL_DIRTY_TEMP_COEFFICIENT(num_rows_to_subtract); PPL_DIRTY_TEMP_COEFFICIENT(row_dim_remainder); - for (dimension_type row_index = pivot_index, kinds_index = dim + jump; - row_index-- > 0; - kinds_index += jump) { - // Move over any virtual rows. - while (sys_dim_kinds[kinds_index] == virtual_kind) - kinds_index += jump; + for (dimension_type kinds_index = dim, + row_index = pivot_index; row_index-- > 0; ) { + if (generators) { + --kinds_index; + // Move over any virtual rows. + while (sys_dim_kinds[kinds_index] == GEN_VIRTUAL) + --kinds_index; + } + else { + ++kinds_index; + // Move over any virtual rows. + while (sys_dim_kinds[kinds_index] == CON_VIRTUAL) + ++kinds_index; + }
// row_kind CONGRUENCE is included as PARAMETER - if (row_kind == line_or_equality + if (row_is_line_or_equality || (row_kind == PARAMETER - && sys_dim_kinds[kinds_index] == PARAMETER)) { + && sys_dim_kinds[kinds_index] == PARAMETER)) { R& row = sys[row_index];
const Coefficient& row_dim = row[dim];
participants (1)
-
Enea Zaffanella