This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR target/14343


Eric Botcazou wrote:

Hi,

The compiler ICEs on

int main() { typedef int v __attribute__ ((mode(V2DI))); v a, b; a = b; return 0; }

with

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) (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.

OK.


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.

--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]