diff options
Diffstat (limited to 'gcc/tree-chrec.c')
-rw-r--r-- | gcc/tree-chrec.c | 24 |
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; |