aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-chrec.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-chrec.c')
-rw-r--r--gcc/tree-chrec.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 18ed4ed..c945f93 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -283,6 +283,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
case POLYNOMIAL_CHREC:
return chrec_fold_plus_poly_poly (code, type, op0, op1);
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op1, NULL))
+ return chrec_dont_know;
+
default:
if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
return build_polynomial_chrec
@@ -296,6 +300,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
CHREC_RIGHT (op0));
}
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op0, NULL))
+ return chrec_dont_know;
+
default:
switch (TREE_CODE (op1))
{
@@ -314,6 +322,10 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
? build_real (type, dconstm1)
: build_int_cst_type (type, -1)));
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op1, NULL))
+ return chrec_dont_know;
+
default:
{
int size = 0;
@@ -393,6 +405,10 @@ chrec_fold_multiply (tree type,
case POLYNOMIAL_CHREC:
return chrec_fold_multiply_poly_poly (type, op0, op1);
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op1, NULL))
+ return chrec_dont_know;
+
default:
if (integer_onep (op1))
return op0;
@@ -405,6 +421,10 @@ chrec_fold_multiply (tree type,
chrec_fold_multiply (type, CHREC_RIGHT (op0), op1));
}
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op0, NULL))
+ return chrec_dont_know;
+
default:
if (integer_onep (op0))
return op1;
@@ -420,6 +440,10 @@ chrec_fold_multiply (tree type,
chrec_fold_multiply (type, CHREC_LEFT (op1), op0),
chrec_fold_multiply (type, CHREC_RIGHT (op1), op0));
+ CASE_CONVERT:
+ if (tree_contains_chrecs (op1, NULL))
+ return chrec_dont_know;
+
default:
if (integer_onep (op1))
return op0;