This small test program generates a segfault if it is compiled with:
gcc40 -march=opteron -O2 -ftree-vectorize gccbug.cpp -o gccbug

Segfault does not occur when __attribute__((noinline)) is omitted.
It occurs with snapshot 20050213 and snapshot 20050220,
but not with snapshot 20050130


Michael Cieslinski


==========================
#include <emmintrin.h>

static struct KStructType
{union{
    short         Kernshort[8][24];
    __m128i     KernSSE[8][3];
};} KU          __attribute__(( aligned(16) ));

static void VecBug(short Kernel[8][24]) __attribute__((noinline));
static void VecBug(short Kernel[8][24])
{
    for (int k = 0; k<8; k++)
        for (int i = 0; i<24; i++)
            KU.Kernshort[k][i] = Kernel[k][i];
}

int main (int argc, char **argv)
{
    short Kernel[8][24];
    for (int k = 0; k<8; k++)
        for (int i = 0; i<24; i++)
            Kernel[k][i] = 0;

    VecBug(Kernel);

    return 0;
}

-- 
           Summary: Wrong code with gcc 4.0 tree-vectorizer
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: micis at gmx dot de
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20122

Reply via email to