diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/gimple-range-gori.cc | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr97359.c | 11 |
2 files changed, 13 insertions, 8 deletions
diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index eaf1a44..9864276 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -1161,12 +1161,6 @@ logical_stmt_cache::cacheable_p (gimple *stmt, const irange *lhs_range) const { switch (gimple_expr_code (stmt)) { - case LT_EXPR: - case LE_EXPR: - case GT_EXPR: - case GE_EXPR: - case EQ_EXPR: - case NE_EXPR: case TRUTH_AND_EXPR: case BIT_AND_EXPR: case TRUTH_OR_EXPR: @@ -1294,7 +1288,7 @@ gori_compute_cache::cache_stmt (gimple *stmt) tree op2 = gimple_range_operand2 (stmt); int_range_max r_true_side, r_false_side; - // LHS = s_5 > 999. + // LHS = s_5 && 999. if (TREE_CODE (op2) == INTEGER_CST) { range_operator *handler = range_op_handler (code, TREE_TYPE (lhs)); @@ -1305,7 +1299,7 @@ gori_compute_cache::cache_stmt (gimple *stmt) handler->op1_range (r_false_side, type, m_bool_zero, op2_range); m_cache->set_range (lhs, op1, tf_range (r_true_side, r_false_side)); } - // LHS = s_5 > b_8. + // LHS = s_5 && b_8. else if (tree cached_name = m_cache->same_cached_name (op1, op2)) { tf_range op1_range, op2_range; diff --git a/gcc/testsuite/gcc.dg/pr97359.c b/gcc/testsuite/gcc.dg/pr97359.c new file mode 100644 index 0000000..142542e --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr97359.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -w" } */ + +typedef unsigned int uint32_t; +int a; +void b(uint32_t c) { + uint32_t *d = &c; + for (; a;) + for (;; (*d %= a) / (*d > 1 > (c > 0)) ?: d) + ; +} |