http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55281



Jakub Jelinek <jakub at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |ASSIGNED

   Last reconfirmed|                            |2012-11-12

                 CC|                            |jakub at gcc dot gnu.org

         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org

                   |gnu.org                     |

   Target Milestone|---                         |4.8.0

     Ever Confirmed|0                           |1



--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-12 
10:33:27 UTC ---

Short testcase:



typedef float VF __attribute__((vector_size (16)));



VF x;



void

foo (void)

{

  VF a, b, c;

  a = (VF) { 1.0, 2.0, 3.0, 4.0 };

  b = (VF) { 5.0, 6.0, 7.0, 8.0 };

  c = (VF) { 0.0, 0.0, 0.0, 0.0 };

  x = c != ((VF) { 0.0, 0.0, 0.0, 0.0 }) ? a : b;

}



with -Ofast.  I was surprised only C++ handles this and not C BTW.

Reply via email to