This is the mail archive of the 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:


The compiler ICEs on

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

with In function `int main()': 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)) 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.

Mark Mitchell
CodeSourcery, LLC

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