2012-04-11 Richard Guenther <rguenther@suse.de>
+ PR middle-end/52621
+ * tree-chrec.c (evolution_function_is_invariant_rec_p): Properly
+ consider loop nesting.
+ (evolution_function_is_univariate_p): Properly check the remainder
+ for chrecs.
+
+2012-04-11 Richard Guenther <rguenther@suse.de>
+
PR middle-end/52918
* except.c (sjlj_emit_dispatch_table): Properly update loop
structure.
2012-04-11 Richard Guenther <rguenther@suse.de>
+ PR middle-end/52621
+ * gfortran.dg/pr52621.f90: New testcase.
+
+2012-04-11 Richard Guenther <rguenther@suse.de>
+
PR middle-end/52918
* g++.dg/torture/pr52918-1.C: New testcase.
* g++.dg/torture/pr52918-2.C: Likewise.
--- /dev/null
+! { dg-do compile }
+! { dg-options "-O2 -fprefetch-loop-arrays" }
+
+ SUBROUTINE GHDSYM(IZ,IS,LMMAX,S,LMS,Y,L2M,DRL,NLAY2,K0,DCUT)!,
+!
+ COMPLEX Y(L2M,L2M),H(33),S(LMS)
+ COMPLEX RU,CI,CZ,K0,FF,Z,Z1,Z2,Z3,ST
+!
+ DO 140 KK=1,4
+ DO 130 L=1,L2M
+ L1=L*L-L
+ DO 120 M=1,L
+ IPM=L1+M
+ IMM=L1-M+2
+ S(IPM)=S(IPM)+Z3*Y(L,M)
+ IF (M.NE.1) S(IMM)=S(IMM)+Z3*Y(M-1,L)*CSGN
+120 CONTINUE
+130 CONTINUE
+140 CONTINUE
+ END
if (TREE_CODE (chrec) == POLYNOMIAL_CHREC)
{
if (CHREC_VARIABLE (chrec) == (unsigned) loopnum
+ || flow_loop_nested_p (get_loop (loopnum),
+ get_loop (CHREC_VARIABLE (chrec)))
|| !evolution_function_is_invariant_rec_p (CHREC_RIGHT (chrec),
loopnum)
|| !evolution_function_is_invariant_rec_p (CHREC_LEFT (chrec),
break;
default:
+ if (tree_contains_chrecs (CHREC_LEFT (chrec), NULL))
+ return false;
break;
}
break;
default:
+ if (tree_contains_chrecs (CHREC_RIGHT (chrec), NULL))
+ return false;
break;
}