https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86855

--- Comment #3 from vincenzo Innocente <vincenzo.innocente at cern dot ch> ---
looks more undefined behavior as
const  __m128 neg = _mm_set_ps(0.0f,0.0f,-0.0f,-0.0f);
     return _mm_xor_ps(_mm_sub_ps(v5, v3), neg);
with -O3 compiles in
xorps .LC0(%rip), %xmm0
  ret
.LC0:
  .long 2147483648
  .long 2147483648
  .long 0
  .long 0
while -Ofast in
xorps .LC0(%rip), %xmm0
  ret
.LC0:
  .long 2147483648
  .long 2147483648
  .long 2147483648
  .long 2147483648

needless to say that neither clang nor icc display such a behavior...

Reply via email to