------- Additional Comments From sebastian dot pop at cri dot ensmp dot fr 2005-08-15 00:34 ------- Subject: Re: [4.1 regression] Tree checking failure due to scev
This patch should fix the problem. There are some more cases that use build_int_cst instead of build_real. I'll propose a more complete patch later. *** tree-scalar-evolution.c.~2.35.~ 2005-08-13 19:06:26.000000000 +0200 --- tree-scalar-evolution.c 2005-08-15 02:36:50.000000000 +0200 *************** *** 1680,1686 **** opnd10 = TREE_OPERAND (opnd1, 0); chrec10 = analyze_scalar_evolution (loop, opnd10); chrec10 = chrec_convert (type, chrec10, at_stmt); ! res = chrec_fold_minus (type, build_int_cst (type, 0), chrec10); break; case MULT_EXPR: --- 1680,1688 ---- opnd10 = TREE_OPERAND (opnd1, 0); chrec10 = analyze_scalar_evolution (loop, opnd10); chrec10 = chrec_convert (type, chrec10, at_stmt); ! res = chrec_fold_multiply (type, chrec10, SCALAR_FLOAT_TYPE_P (type) ! ? build_real (type, dconstm1) ! : build_int_cst_type (type, -1)); break; case MULT_EXPR: *** tree-chrec.c.~2.23.~ 2005-08-13 19:06:26.000000000 +0200 --- tree-chrec.c 2005-08-15 02:20:51.000000000 +0200 *************** *** 284,291 **** return build_polynomial_chrec (CHREC_VARIABLE (op1), chrec_fold_minus (type, op0, CHREC_LEFT (op1)), ! chrec_fold_multiply (type, CHREC_RIGHT (op1), ! build_int_cst_type (type, -1))); default: { --- 284,292 ---- return build_polynomial_chrec (CHREC_VARIABLE (op1), chrec_fold_minus (type, op0, CHREC_LEFT (op1)), ! chrec_fold_multiply (type, CHREC_RIGHT (op1), SCALAR_FLOAT_TYPE_P (type) ! ? build_real (type, dconstm1) ! : build_int_cst_type (type, -1))); default: { -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23391