When I try to compile qemu on MinGW gcc 3.4.5 using -march=i686 or higher, or use -msse, the helper.c file on the i386 (but not the x86_64 target, for some odd reason) spits out C:/msys/1.0/home/Owner/SoureCode/qemu/target-i386/helper.c: In function `svm_check_intercept_param': C:/msys/1.0/home/Owner/SoureCode/qemu/target-i386/helper.c:4375: error: unable to find a register to spill in class `GENERAL_REGS' C:/msys/1.0/home/Owner/SoureCode/qemu/target-i386/helper.c:4375: error: this is the insn: (insn:HI 353 352 354 39 C:/msys/1.0/home/Owner/SoureCode/qemu/target-i386/helper.c:4368 (parallel [ (set (reg:DI 167 [ <variable>.intercept ]) (lshiftrt:DI (reg:DI 167 [ <variable>.intercept ]) (subreg:QI (reg:SI 166) 0))) (clobber (scratch:SI)) (clobber (reg:CC 17 flags)) ]) 309 {lshrdi3_1} (insn_list 351 (insn_list 352 (nil))) (expr_list:REG_DEAD (reg:SI 166) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_UNUSED (scratch:SI) (nil)))))
A similar error happens on ppc with op_helper, but it seems to be a problem with a header file (it also doesn't choke up when compiling the 64-bit target... odd): ./softmmu_template.h: In function `__stq_mmu': ./softmmu_template.h:260: error: unable to find a register to spill in class `GENERAL_REGS' ./softmmu_template.h:260: error: this is the insn: (insn:HI 254 249 255 13 ../softmmu_template.h:289 (parallel [ (set (reg:DI 0 ax [171]) (lshiftrt:DI (reg/v:DI 59 [ val ]) (subreg:QI (reg:SI 194) 0))) (clobber (scratch:SI)) (clobber (reg:CC 17 flags)) ]) 309 {lshrdi3_1} (nil) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_UNUSED (scratch:SI) (nil)))) ./softmmu_template.h:260: confused by earlier errors, bailing out make: *** [op_helper.o] Error 1