Bug 58429 - _Decimal64 support is broken on powerpc64 with the mode32 ABI (-m32 -mpowerpc64)
Summary: _Decimal64 support is broken on powerpc64 with the mode32 ABI (-m32 -mpowerpc64)
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.7.2
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-15 23:02 UTC by Vincent Lefèvre
Modified: 2013-09-15 23:02 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.