From 2f92f685da2ef9e82ee6262519919180df8f2dd9 Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Wed, 21 Sep 2022 16:15:02 -0400 Subject: Always check the return value of fold_range. The fold_range routine in range-ops returns FALSE if the operation fails. There are a few places which assume the operation was successful. Fix those. * gimple-range-fold.cc (range_of_range_op): Set result to VARYING if the call to fold_range fails. * tree-data-ref.cc (compute_distributive_range): Ditto. * tree-vrp.cc (range_fold_binary_expr): Ditto. (range_fold_unary_expr): Ditto. * value-query.cc (range_query::get_tree_range): Ditto. --- gcc/value-query.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gcc/value-query.cc') diff --git a/gcc/value-query.cc b/gcc/value-query.cc index 0bdd670..296784b 100644 --- a/gcc/value-query.cc +++ b/gcc/value-query.cc @@ -252,7 +252,8 @@ range_query::get_tree_range (vrange &r, tree expr, gimple *stmt) Value_Range r1 (TREE_TYPE (TREE_OPERAND (expr, 1))); range_of_expr (r0, TREE_OPERAND (expr, 0), stmt); range_of_expr (r1, TREE_OPERAND (expr, 1), stmt); - op.fold_range (r, type, r0, r1); + if (!op.fold_range (r, type, r0, r1)) + r.set_varying (type); } else r.set_varying (type); @@ -268,7 +269,8 @@ range_query::get_tree_range (vrange &r, tree expr, gimple *stmt) Value_Range r1 (type); r1.set_varying (type); range_of_expr (r0, TREE_OPERAND (expr, 0), stmt); - op.fold_range (r, type, r0, r1); + if (!op.fold_range (r, type, r0, r1)) + r.set_varying (type); } else r.set_varying (type); -- cgit v1.1