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 c/16185] New: qemu 0.5.5 fails to compile with -march={i686,pentium4,athlon}


When compiling qemu 0.5.5 (http://fabrice.bellard.free.fr/qemu/), the following
error occurs:

gcc -O2 -frename-registers -fomit-frame-pointer -march=i686 -fomit-frame-pointer
-I. -I/tmp/qemu/BUILD/qemu-0.5.5/target-i386 -I/tmp/qemu/BUILD/qemu-0.5.5
-D_GNU_SOURCE -c -o translate.o /tmp/qemu/BUILD/qemu-0.5.5/target-i386/translate.c
gcc -O2 -frename-registers -fomit-frame-pointer -march=i686 -I.
-I/tmp/qemu/BUILD/qemu-0.5.5/target-i386 -I/tmp/qemu/BUILD/qemu-0.5.5
-D_GNU_SOURCE -c -o helper.o /tmp/qemu/BUILD/qemu-0.5.5/target-i386/helper.c
In file included from /tmp/qemu/BUILD/qemu-0.5.5/target-i386/helper.c:2492:
/tmp/qemu/BUILD/qemu-0.5.5/softmmu_template.h: In function `slow_ldq_mmu':
/tmp/qemu/BUILD/qemu-0.5.5/softmmu_template.h:179: error: unable to find a
register to spill in class `GENERAL_REGS'
/tmp/qemu/BUILD/qemu-0.5.5/softmmu_template.h:179: error: this is the insn:
(insn:HI 167 164 168 6 0x407a0ec8 (parallel [
            (set (reg:DI 112)
                (lshiftrt:DI (reg/v:DI 63)
                    (subreg:QI (reg:SI 111) 0)))
            (clobber (scratch:SI))
            (clobber (reg:CC 17 flags))
        ]) 320 {lshrdi3_1} (insn_list 136 (insn_list 164 (nil)))
    (expr_list:REG_DEAD (reg/v:DI 63)
        (expr_list:REG_UNUSED (scratch:SI)
            (expr_list:REG_UNUSED (reg:CC 17 flags)
                (nil)))))
/tmp/qemu/BUILD/qemu-0.5.5/softmmu_template.h:179: confused by earlier errors,
bailing out
make[1]: ** [helper.o] Erro 1
make[1]: Leaving directory `/tmp/qemu/BUILD/qemu-0.5.5/i386'
make: ** [all] Erro 1
erro: Status de saída ruim em /tmp/qemu/BUILDROOT/rpm-tmp.6894 (%build)

As the log shows, I used the flags "-O2 -frename-registers -fomit-frame-pointer
-march=i686". Interestingly, the problem above doesn't occurs when I specify
-march={i386,i486,i586}, I only have an error when using i686/athlon/pentium4 (I
didn't test all combinations, probably other options greater than i686 are also
affected). To compile qemu with different flags, you must edit Makefile and
Makefile.target from qemu sources, using for example sed:

sed -i "s/CFLAGS=.*/CFLAGS=-O2 -frename-registers -fomit-frame-pointer
-march=i686/" Makefile{,.target}

-- 
           Summary: qemu 0.5.5 fails to compile with -
                    march={i686,pentium4,athlon}
           Product: gcc
           Version: 3.3.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: herton at brturbo dot com
                CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: i386-conectiva-linux
GCC target triplet: i386-conectiva-linux


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


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