When cc1 for powerpc64-linux is a 32-bit binary, compiling

  _Decimal32 x = 1.2df;

with "-m64 -S" results in:

        .file   "df.c"
        .section        ".toc","aw"
        .section        ".text"
        .globl x
        .section        ".data"
        .align 2
        .type   x, @object
        .size   x, 4
x:
        .long   574619666
        .ident  "GCC: (GNU) 4.5.0 20090430 (experimental) [trunk revision
147009]"

When the same compiler is built to be a 64-bit binary then the result is the
same except for

        .size   x, 4
x:
        .long   2467972673108443136

I normally configure GCC using --with-cpu=default32 and haven't yet checked to
see long the bug has existed; perhaps as long as GCC has supported decimal
float arithmetic.

If check_effective_target_dfprt_nocache fails then the tests in gcc.dg/dfp are
treated as compile-only and the struct-layout-1 tests do not support decimal
float types, and currently there is no test for the correct constant value so
the bug was not detected by running the testsuite.


-- 
           Summary: decimal float constant is incorrect when cc1 is a 64-bit
                    binary
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis at gcc dot gnu dot org
  GCC host triplet: powerpc64-linux
GCC target triplet: powerpc64-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39986

Reply via email to