>Number: 8994 >Category: optimization >Synopsis: ICE with -O -march=pentium4 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Wed Dec 18 11:46:00 PST 2002 >Closed-Date: >Last-Modified: >Originator: Torbjörn Wassberg >Release: gcc version 3.2.2 20021218 (prerelease) >Organization: >Environment: Mandrake 9.0 x86 binutils 2.13.90.0.10 Configured with: ../gcc/configure --prefix=/usr/local/gcc-3_2-branch --enable-languages=c >Description: This is causing problems when compiling mozilla's javascript-source (see bugzilla.mozilla.org 172618) with -O -march=pentium4, note that this is not a dup of 7630. gcc -Wall -save-temps -O -march=pentium4 -o A -c A.c A.c: In function `js_dtoa': A.c:12: warning: deprecated use of label at end of compound statement A.c:12: unable to find a register to spill in class `AREG' A.c:12: this is the insn: (insn 26 25 27 (set (reg:CCNO 17 flags) (compare:CCNO (and:SI (subreg:SI (reg/v:DI 21 rxmm0 [59]) 0) (const_int 1 [0x1])) (const_int 0 [0x0]))) 281 {testsi_1} (insn_list 22 (nil)) (expr_list:REG_DEAD (reg/v:DI 21 rxmm0 [59]) (nil))) A.c:12: confused by earlier errors, bailing out # 1 "A.c" # 1 "" # 1 "" # 1 "A.c" typedef union { double value; int lsw; } astr; void js_dtoa(double d) { while(1) if (( { astr sh_u; sh_u.value = d; sh_u.lsw; }) & 1) goto ret; ret: } >How-To-Repeat: gcc -O -march=pentium4 -o A -c A.c >Fix: Change -march=pentium4 to something else >Release-Note: >Audit-Trail: >Unformatted: