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

--- Comment #5 from Surya Kumari Jangala <jskumari at gcc dot gnu.org> ---
The input gimple to RTL has the builtin split into two parts: ‘isinfD’ and
‘signbitD’ due to which in the final assembly generated, we have instructions
to check the sign bit of the floating point number instead of using the sign
bit computed by the xststdcdp insn.
Instead, if we can avoid splitting the builtin, we can modify RTL to handle the
builtin and generate optimized instructions.
This split seems to be happening before the gimple passes. Using
-fdump-tree-all-all option, the first file in the dump
(<filename>.006t.original) has the split:

;; Function test1 (null)
;; enabled by -tree-original


{
  return isinfD.1825 (xD.3943) != 0 ? signbitD.1014 (xD.3943) != 0 ? -1 : 1 :
0;
}

Reply via email to