This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix PR target/14343
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Eric Botcazou <ebotcazou at libertysurf dot fr>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 05 Mar 2004 21:00:02 -0800
- Subject: Re: [PATCH] Fix PR target/14343
- Organization: CodeSourcery, LLC
- References: <firstname.lastname@example.org>
Eric Botcazou wrote:
The compiler ICEs on
typedef int v __attribute__ ((mode(V2DI)));
v a, b;
a = b;
vti.cc: In function `int main()':
vti.cc:7: error: unrecognizable insn:
(insn 25 3 26 0 (set (reg:V2DI 70 [ b ])
(mem/f:V2DI (symbol_ref:SI ("b") [flags 0x2] <var_decl 0x404fa3cc b>)
[0 b+0 S16 A128])) -1 (nil)
vti.cc:7: internal compiler error: in extract_insn, at recog.c:2083
when compiled with -march=pentium3 but not -march=pentium4, a regression
present on mainline and 3.4 branch.
So the obvious fix would be to remove the "2" above. However, unless I'm
mistaken, it seems to me that the i386 back-end is a little confused about
SSE vs SSE2 because, according to my manual, 'movaps' is SSE while 'movdqa'
is SSE2. Or is there a mechanism to guarantee that the mode insn will
always be MODE_V4SF for !TARGET_SSE2 ?
Yes, SSE does not have double-precision float support.
In any case, your patch cannot make things any worse, so please check it in.