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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok. The FRE2 difference is interesting but ok.  We CSE

  _7 = __builtin_signbit (1.2999999523162841796875e+0);
  if (_7 != 0)
    goto <bb 4>;
  else
    goto <bb 3>;

  <bb 3>:

  <bb 4>:
  # iftmp.9_8 = PHI <-1.0e+0(2), 1.0e+0(3)>

...
  <bb 14>:
  if (_7 != 0)
    goto <bb 16>;
  else
    goto <bb 15>;

  <bb 15>:

  <bb 16>:
  # iftmp.13_15 = PHI <-1.0e+0(14), 1.0e+0(15)>
  _16 = __builtin_copysignf (-1.2999999523162841796875e+0, iftmp.13_15);

to use iftmp.9_8 in the last copysignf statement, removing the PHI node
preceeding it as well as the redundant test of _7 != 0.  We do this for
five cases.

The PRE dump difference is pretty unreadable already.  So I wonder if
the issue reproduces with -fno-tree-pre added.  If not I wonder
if it reproduces with -fdisable-tree-fre2 or at least -fno-tree-tail-merge.

AFAIK x86_64-darwin uses SSE math even with -m32, correct?  On x86_64-linux
I can't fully get rid of the use of the FP stack (library calls).

Reply via email to