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

--- Comment #3 from Igor Shevlyakov <igor at tachyum dot com> ---
parsing the rest of dumps (produced with -O1):

in .sincos:

int f2 (double a, double b)
{
  int iftmp.0_1;
  _Bool _5;
  _Bool _8;
  _Bool _9;

  <bb 2> [local count: 1073741824]:
  _5 = a_2(D) == b_3(D);
  _8 = a_2(D) >= b_3(D);
  _9 = _5 & _8;
  iftmp.0_1 = (int) _9;
  return iftmp.0_1;

}
---

Previous transofrmation was ok, as even that <= (signaling) turned to ==
(quiet) it would be false on NaN so 2nd comparison will still be evaluated and
signal.

But in .reassoc2 it drops it:

;; Function f2 (f2, funcdef_no=1, decl_uid=11103, cgraph_uid=2, symbol_order=1)

;; 1 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 2
;; 2 succs { 1 }
int f2 (double a, double b)
{
  int iftmp.0_1;
  _Bool _5;
  _Bool _7;
  _Bool _8;
  _Bool _9;

  <bb 2> [local count: 1073741824]:
  _7 = a_2(D) == b_3(D);
  _5 = a_2(D) == b_3(D);
  _8 = a_2(D) >= b_3(D);
  _9 = _7;
  iftmp.0_1 = (int) _9;
  return iftmp.0_1;

}

Reply via email to