#461 Internal compiler error pentium4/sse2 and optimization

gcc (462)
Bob Brand


Platform: windows NT4 sp6a
> gcc --version
gcc.exe (GCC) 3.3.1 (mingw special 20030804-1)
> grep __MINGW32_VERSION \lang\mingw331
#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;

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
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.mingw.org/bugs.shtml> for

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.


Bob Brand


  • Danny Smith

    Danny Smith - 2003-12-01

    Logged In: YES

    Thanks for providing a reproducible testcase.

    This appears to be the same bug as the one reported on GCC
    bugzilla at:


    Perhaps you should add your testcase to the audit trail for
    that bug. Your testcase is smaller than the existing testcase
    for that bug.


  • Bob Brand

    Bob Brand - 2003-12-02

    Logged In: YES

    Thanks for your attention.
    I have added this to GCC's bug 11627.


    Bob Brand.

  • Danny Smith

    Danny Smith - 2004-07-27
    • status: open --> closed-fixed
  • Danny Smith

    Danny Smith - 2004-07-27

    Logged In: YES

    Fixed in 3.4.1


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.

No, thanks