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.