Bug 58429

Summary: _Decimal64 support is broken on powerpc64 with the mode32 ABI (-m32 -mpowerpc64)
Product: gcc Reporter: Vincent Lefèvre <vincent-gcc>
Component: targetAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED DUPLICATE    
Severity: normal    
Priority: P3    
Version: 4.7.2   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed:

Description Vincent Lefèvre 2013-09-15 23:02:42 UTC
On gcc110.fsffrance.org:

$ cat ./decimal64.c
#include <stdio.h>
int main(void)
{
  _Decimal64 x = 1;
  if (x != x)
    {
      printf ("Error!\n");
      return 1;
    }
  else
    {
      printf ("OK\n");
      return 0;
    }
}

$ gcc -Wall -std=gnu99 -m32 -mpowerpc64 decimal64.c -o decimal64 -O
$ ./decimal64
OK
$ gcc -Wall -std=gnu99 -m32 -mpowerpc64 decimal64.c -o decimal64
$ ./decimal64
Error!

(The lack of error with -O is due to obvious optimization; a "volatile" on the variable makes the error appear in every case.)

The problem doesn't appear with -m32 alone or -mpowerpc64 alone. Both are needed to make it appear.

$ gcc --version
gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Comment 1 Andrew Pinski 2021-08-16 05:34:54 UTC
This is most likely a dup of bug 27619 which was a bug in binutils.

*** This bug has been marked as a duplicate of bug 27619 ***