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

--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> ---
bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.i 
long
dxex (_Decimal64 arg)
{
  return __builtin_dxex (arg);
}

bergner@pike:~/gcc/BUGS/LTC137326$ gcc -O2 -mcpu=power8 -S dxex.i
bergner@pike:~/gcc/BUGS/LTC137326$ cat dxex.s 
[snip]
dxex:
        dxex 1,1
        drintn. 0,1,1,1
        dctfix 1,1
        mfvsrd 3,1
        blr

Notice the incorrect FP -> integer cast that destroys the return value.
Expected code is:

dxex:
        dxex 0,1
        mfvsrd 3,0
        blr

Reply via email to