This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/18641] New: Another ICE caused by reload of a psuedo reg into f0 for a DImode expr


This is similar to PR/152866. In the following test case compiled with -O0
gcc-4.0 produces following patter in reload phase:

(insn 68 47 67 7 (set (reg:DI 32 f0)
        (const_int 4294967295 [0xffffffff])) 354 {*movdi_internal32} (nil)
    (nil))

This pattern cause ICE in gen_reg_rtx.

This is the usual problem. Reload decides to use a float register for a 'long long' expression, a
constant in this case because this is legit. for powerpc. But ppc patterns cannot handle it.

/* Test case */
void crc()
{
    int  toread;
    long long nleft;
    unsigned char buf[(128 * 1024)];

    nleft = 0;
    while (toread = (nleft < (2147483647 * 2U + 1U)) ? nleft: (2147483647 * 2U + 1U) )
        ;
}

-- 
           Summary: Another ICE caused by reload of a psuedo reg into f0 for
                    a DImode expr
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: uweigand at de dot ibm dot com
        ReportedBy: fjahanian at apple dot com
                CC: dje at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot
                    org
 GCC build triplet: powerpc-apple-darwin7.0.0
  GCC host triplet: powerpc-apple-darwin7.0.0
GCC target triplet: powerpc-apple-darwin7.0.0


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]