aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-10-14 22:01:45 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-10-14 15:01:45 -0700
commitb77aa1f774128032e69cfa52a5c4726b5029d313 (patch)
treef7918bbe2d3560c746926c104702902d16a92e9f /gcc/stmt.c
parent4965c1630ef510db74c8e167f65703d1947870a1 (diff)
downloadgcc-b77aa1f774128032e69cfa52a5c4726b5029d313.zip
gcc-b77aa1f774128032e69cfa52a5c4726b5029d313.tar.gz
gcc-b77aa1f774128032e69cfa52a5c4726b5029d313.tar.bz2
stmt.c (add_case_node): Make sure that we have integer constant before calling tree_int_cst_compare.
2004-10-14 Andrew Pinski <pinskia@physics.uc.edu> * stmt.c (add_case_node): Make sure that we have integer constant before calling tree_int_cst_compare. From-SVN: r89058
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 5560dbc..a9bb3e6 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2139,8 +2139,10 @@ add_case_node (struct case_node *head, tree type, tree low, tree high,
if (!high || tree_int_cst_equal (low, high))
{
/* If the simple case value is unreachable, ignore it. */
- if (tree_int_cst_compare (low, min_value) < 0
- || tree_int_cst_compare (low, max_value) > 0)
+ if ((TREE_CODE (min_value) == INTEGER_CST
+ && tree_int_cst_compare (low, min_value) < 0)
+ || (TREE_CODE (max_value) == INTEGER_CST
+ && tree_int_cst_compare (low, max_value) > 0))
return head;
low = fold_convert (type, low);
high = low;
@@ -2148,19 +2150,23 @@ add_case_node (struct case_node *head, tree type, tree low, tree high,
else
{
/* If the entire case range is unreachable, ignore it. */
- if (tree_int_cst_compare (high, min_value) < 0
- || tree_int_cst_compare (low, max_value) > 0)
+ if ((TREE_CODE (min_value) == INTEGER_CST
+ && tree_int_cst_compare (high, min_value) < 0)
+ || (TREE_CODE (max_value) == INTEGER_CST
+ && tree_int_cst_compare (low, max_value) > 0))
return head;
/* If the lower bound is less than the index type's minimum
value, truncate the range bounds. */
- if (tree_int_cst_compare (low, min_value) < 0)
+ if (TREE_CODE (min_value) == INTEGER_CST
+ && tree_int_cst_compare (low, min_value) < 0)
low = min_value;
low = fold_convert (type, low);
/* If the upper bound is greater than the index type's maximum
value, truncate the range bounds. */
- if (tree_int_cst_compare (high, max_value) > 0)
+ if (TREE_CODE (max_value) == INTEGER_CST
+ && tree_int_cst_compare (high, max_value) > 0)
high = max_value;
high = fold_convert (type, high);
}