http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46265
davidxl <davidxl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |davidxl at gcc dot gnu.org --- Comment #2 from davidxl <davidxl at gcc dot gnu.org> 2010-11-03 05:24:54 UTC --- The following is another example gcc fails to ifcvt, while llvm performs ifcvt + hoist the conditional assignment out of the loop. 2 extern int gen_int(int); 3 extern void ref_int_p(int*); 4 5 void kernel3 () 6 { 7 int i; 8 int j; 9 int k; 10 int l; 11 int m; 12 int a[200]; 13 14 j = gen_int (0); 15 k = gen_int (0); 16 l = gen_int (0); 17 m = gen_int (0); 18 19 for (i = 0; i < 200; i++) 20 { 21 if (j < k || j < l || j < m ) 22 a[i] = 1; 23 else 24 a[i] = j; 25 } 26 27 ref_int_p (&a[0]); 28 29 return; 30 }