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 }

Reply via email to