[Bug target/14981] New: ICE in _mm_xor_pd for SSE2 with -O1
davide dot rossetti at roma1 dot infn dot it
gcc-bugzilla@gcc.gnu.org
Fri Apr 16 18:54:00 GMT 2004
tried on snapshot 3.4-20040414 but exists since 3.4-20040218
3.3.2 20040108 (Red Hat Linux 3.3.2-6) is OK
CVS HEAD from 3.5 is OK
ICE is:
gcc_snapshot/build/bin/gcc -v -save-temps -O1 -S -msse2 -mfpmath=sse v2dfxor3.c
...
/beatle/home1/sw/gcc_snapshot/build/libexec/gcc/i686-pc-linux-gnu/3.4.0/cc1
-fpreprocessed v2dfxor3.i -quiet -dumpbase v2dfxor3.c -msse2 -mfpmath=sse
-mtune=pentiumpro -auxbase v2dfxor3 -O1 -version -o v2dfxor3.s
GNU C version 3.4.0 20040414 (prerelease) (i686-pc-linux-gnu)
compiled by GNU C version 3.3.2 20040108 (Red Hat Linux 3.3.2-6).
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64266
v2dfxor3.c: In function `xorv2df3':
v2dfxor3.c:10: internal compiler error: in immed_double_const, at emit-rtl.c:481
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
it is caused by immed_double_const() mistakenly been called by
simplify_immed_subreg(). the latter is not ready to take TImode in outer_class ...
the test is not worth an attachment:
#include <emmintrin.h>
__v2df res;
void xorv2df3(double *x)
{
__v2df temp0={x[0],x[1]};
__v2df temp1={0x0, 0x0};
res = _mm_xor_pd(temp0, temp1);
}
--
Summary: ICE in _mm_xor_pd for SSE2 with -O1
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: davide dot rossetti at roma1 dot infn dot it
CC: alessandro dot lonardo at roma1 dot infn dot it,gcc-bugs
at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu-gcc-3.4.0
GCC host triplet: i686-pc-linux-gnu-gcc-3.4.0
GCC target triplet: i686-pc-linux-gnu-gcc-3.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14981
More information about the Gcc-bugs
mailing list