From: SourceForge.net <no...@so...> - 2003-12-01 20:36:08
|
Bugs item #852092, was opened at 2003-12-02 03:12 Message generated for change (Comment added) made by dannysmith You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=852092&group_id=2435 Category: gcc Group: component package Status: Open Resolution: None Priority: 5 Submitted By: Bob Brand (bbnkiavl) Assigned to: Danny Smith (dannysmith) Summary: Internal compiler error pentium4/sse2 and optimization Initial Comment: Hello, Platform: windows NT4 sp6a > gcc --version gcc.exe (GCC) 3.3.1 (mingw special 20030804-1) > grep __MINGW32_VERSION \lang\mingw331 \include\_mingw.h #define __MINGW32_VERSION 3.2 Compilation of sse2 instructions using -msse2, -mcpu=pentium4 or -march=pentium4 together with optimization -O, -O1 or higher generates an internal compiler error. Example code: #include <xmmintrin.h> void test(void) { short *p; int *q; __m128i v, u, w, _xf, _yf, _yf1; for(;;) { int a = _mm_extract_epi16(v, 0); w = _mm_insert_epi16(w, p[a+1], 7); v = _mm_mulhi_epu16(_yf1, _xf); u = _mm_madd_epi16(u, v); v = _mm_mulhi_epu16(_yf, _xf); w = _mm_madd_epi16(w, v); u = _mm_add_epi32(u, w); u = _mm_srai_epi32(u, 15); *(__m128i *)(q) = _mm_add_epi32(*(__m128i *) (q), u); } } Compile with e.g.: gcc -c -O2 -msse2 prob3.c or (rename snippet to prob3.cpp): g++ -c -O -march=pentium4 prob3.cpp Compiler output: prob3.c: In function `test': prob3.c:24: internal compiler error: in push_reload, at reload.c:1261 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.mingw.org/bugs.shtml> for instructions. The code snipped is very much reduced. Removing any further lines or removal of the loop removes the internal compiler error. Manually substituting the _mm_... functions with the __builtin_ia32_... functions as defined in xmmintrinsic.h changes the internal compiler error from one in push_reload to: internal compiler error: in ix86_expand_binop_builtin, at config/i386/i386.c:13113 Possibly a red herring: a slightly larger snipped did compile when for(;;) was changed into while(1), in the above snippet this does not matter. I suspect that this is a generic GCC problem, but I do not have access to other GCC systems here to test this. Thanks for looking into this. Regards, Bob Brand ---------------------------------------------------------------------- >Comment By: Danny Smith (dannysmith) Date: 2003-12-02 09:36 Message: Logged In: YES user_id=11494 Thanks for providing a reproducible testcase. This appears to be the same bug as the one reported on GCC bugzilla at: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11627 Perhaps you should add your testcase to the audit trail for that bug. Your testcase is smaller than the existing testcase for that bug. Danny ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=852092&group_id=2435 |