Bug 24292 - Can't build qemu 0.7.2
Summary: Can't build qemu 0.7.2
Status: RESOLVED DUPLICATE of bug 16185
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.0.2
: P2 normal
Target Milestone: 4.0.2
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2005-10-09 23:31 UTC by John Richard Moser
Modified: 2005-10-10 00:22 UTC (History)
6 users (show)

See Also:
Host:
Target: i486-linux-gnu
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
the dot-i file thingy you guys wanted (30.41 KB, text/plain)
2005-10-09 23:49 UTC, John Richard Moser
Details

Note You need to log in before you can comment on or make changes to this bug.
Description John Richard Moser 2005-10-09 23:31:55 UTC
Trying to build qemu 0.7.2 gives the following error:

/tmp/qemu-0.7.2/target-i386/ops_sse.h: In function 'op_pshufw_mmx':
/tmp/qemu-0.7.2/target-i386/ops_sse.h:574: error: unable to find a register to spill in class 'GENERAL_REGS'
/tmp/qemu-0.7.2/target-i386/ops_sse.h:574: error: this is the insn:
(insn:HI 18 17 19 0 /tmp/qemu-0.7.2/target-i386/ops_sse.h:569 (set (strict_low_part (subreg:HI (reg/v:DI 63 [ r ]) 0))
        (mem/s/j:HI (plus:SI (mult:SI (reg:SI 64)
                    (const_int 2 [0x2]))
                (reg/v/f:SI 59 [ s ])) [0 <variable>._w S2 A16])) 52 {*movstricthi_1} (insn_list:REG_DEP_TRUE 16 (insn_list:REG_DEP_TRUE 12 (insn_list:REG_DEP_TRUE 53 (nil))))
    (expr_list:REG_DEAD (reg:SI 64)
        (nil)))
/tmp/qemu-0.7.2/target-i386/ops_sse.h:574: confused by earlier errors, bailing out
make[1]: *** [op.o] Error 1


The related code appears to be:


void OPPROTO glue(op_pshufw, SUFFIX) (void)
{
    Reg r, *d, *s;
    int order;
    d = (Reg *)((char *)env + PARAM1);
    s = (Reg *)((char *)env + PARAM2);
    order = PARAM3;
    r.W(0) = s->W(order & 3);
    r.W(1) = s->W((order >> 2) & 3);
    r.W(2) = s->W((order >> 4) & 3);
    r.W(3) = s->W((order >> 6) & 3);
    *d = r;
}


My version information is:


bluefox@icebox:/tmp/qemu-0.7.2$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-shared --with-system-zlib --libexecdir=/usr/lib --enable-nls --without-included-gettext --enable-threads=posix --program-suffix=-4.0 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)


qemu can be found at qemu.org; I had unpacked qemu, cd'd into the directory, and unpacked kqemu into it, then ran ./configure and make, each with no options, as the kqemu documentation says.
Comment 1 John Richard Moser 2005-10-09 23:49:32 UTC
Created attachment 9949 [details]
the dot-i file thingy you guys wanted

the thingy that appeared in a completely different directory than related .c and .h files o.o
Comment 2 Andrew Pinski 2005-10-10 00:21:44 UTC
Reduced testcase:
register struct CPUX86State *env asm("ebp");
register unsigned long T0 asm("ebx");
register unsigned long T1 asm("esi");
register unsigned long T2 asm("edi");


extern int __op_param1, __op_param2, __op_param3;

void op_movq(void)
{
     unsigned long long*d, *s;
    d = (unsigned long long *)((char *)env + ((long)(&__op_param1)));
    s = (unsigned long long *)((char *)env + ((long)(&__op_param2)));
    *d = *s;
}


-----

Hmm, you are starving the RA, so in a way this is not a bug.  There is a dup of this bug too.
Comment 3 Andrew Pinski 2005-10-10 00:22:41 UTC
This is a dup of bug 16185.

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