Hi, this testcase breaks with partial inlining because it depends on hand hoisted loop header out of the loop nest. Partial inling (correctly) moves the test out of function and prevents the analysis to happen.
The whole testcase is very artificial, so I think it is fine to disable partial inlining until we have IPA value range propagation. Comitted as obvoius. Honza Index: ChangeLog =================================================================== --- ChangeLog (revision 202296) +++ ChangeLog (working copy) @@ -1,3 +1,6 @@ +2013-09-05 Jan Hubicka <j...@suse.cz> + + * gcc.dg/autopar/pr49960.c: Disable partial inlining 2013-09-05 Richard Biener <rguent...@suse.de> PR tree-optimization/58137 Index: gcc.dg/autopar/pr49960.c =================================================================== --- gcc.dg/autopar/pr49960.c (revision 202271) +++ gcc.dg/autopar/pr49960.c (working copy) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized" } */ +/* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops-details -fdump-tree-optimized -fno-partial-inlining" } */ #include <stdio.h> #define MB 100 @@ -12,7 +12,9 @@ void MRTRBR(int MA_1, int NA_1, int MB_1 int i,j, t,k; /* At the moment we are not able to hoist the loop headers out of the loop - nest. */ + nest. + Partial inlining needs to be disabled so we do not optimize this out + of the function body. */ if (MA_1 < 4 || NA_1 < 4 || MB_1 < 4) return;