With current GCC CVS (4.0.0 20050122) I get the following ICE compiling glibc: /opt/gcc/4.0-devel/libexec/gcc/x86_64-suse-linux-gnu/4.0.0/cc1 -fpreprocessed s_fma2.i -quiet -dumpbase s_fma.c -mtune=k8-auxbase-strip /tmp/s_fma.o -g -O2 -Wall -Winline -Wno-pointer-sign -Wstrict-prototypes -Wwrite-strings -Wno-uninitialized -std=gnu99 -version -o s_fma.s GNU C version 4.0.0 20050122 (experimental) (x86_64-suse-linux-gnu) compiled by GNU C version 4.0.0 20050122 (experimental). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 s_fma2.i: In function ?__fma?: s_fma2.i:123: error: insn does not satisfy its constraints: (insn 268 84 86 7 s_fma2.i:5 (set (reg/v:DI 21 xmm0 [orig:79 _bitsy ] [79]) (const_int 2310346608841064448 [0x2010000000000000])) 81 {*movdi_1_rex64} (nil) (nil)) s_fma2.i:123: internal compiler error: in reload_cse_simplify_operands, at postreload.c:391 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Created attachment 8042 [details] Reduced testcase
Confirmed, fully reduced testcase: double __fma(void) { double t,t1; {union {double d; unsigned long long i;} _bitsy; _bitsy.i = 0x2010000000000000LL; t1 = _bitsy.d;}; {union {double d; unsigned long long i;} _bitsy; _bitsy.i = 0x2010000000000000LL; t = _bitsy.d;}; return t1*t; }
Subject: Bug 19584 CVSROOT: /cvs/gcc Module name: gcc Changes by: rth@gcc.gnu.org 2005-01-25 18:44:05 Modified files: gcc : ChangeLog gcc/config/i386: i386.c i386.md Log message: PR target/19556 PR target/19584 * config/i386/i386.c (x86_inter_unit_moves): Zero. (ix86_preferred_reload_class): Rewrite fp-constant section, with 80387 enabled, to return a proper subclass. Return the subset that overlaps with GENERAL_REGS for PLUS. * config/i386/i386.md (movsi_1, movdi_2): Set type to "mmx" for pxor. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7270&r2=2.7271 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&r1=1.789&r2=1.790 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.md.diff?cvsroot=gcc&r1=1.612&r2=1.613
http://gcc.gnu.org/ml/gcc-patches/2005-01/msg01815.html