diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-10-14 22:01:45 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-10-14 15:01:45 -0700 |
commit | b77aa1f774128032e69cfa52a5c4726b5029d313 (patch) | |
tree | f7918bbe2d3560c746926c104702902d16a92e9f /gcc/stmt.c | |
parent | 4965c1630ef510db74c8e167f65703d1947870a1 (diff) | |
download | gcc-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.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -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); } |