I get an ICE when I compile at -O1 (and only at -O1).
With the original source only gcc403 ICEs but not gcc401.
With the reduced source gcc401 ICEs too.

Michael Cieslinski


g++403 -O1 -S mb.ii -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.0.3/configure --prefix=/usr/local/gcc403
--program-suffix=403 --with-arch=opteron --enable-languages=c,c++
Thread model: posix
gcc version 4.0.3
 /usr/local/gcc403/libexec/gcc/x86_64-unknown-linux-gnu/4.0.3/cc1plus
-fpreprocessed mb.ii -quiet -dumpbase mb.ii -march=opteron -auxbase mb -O1
-version -o mb.s
GNU C++ version 4.0.3 (x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.0.3.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
mb.ii: In function 'long int __vector__ foo()':
mb.ii:29: error: unrecognizable insn:
(insn 109 30 96 3 (set (reg:V2SI 0 ax)
        (const_vector:V2SI [
                (const_int -1 [0xffffffffffffffff])
                (const_int -1 [0xffffffffffffffff])
            ])) -1 (nil)
    (nil))
mb.ii:29: internal compiler error: in extract_insn, at recog.c:2020


mb.ii:

typedef long V2 __attribute__ ((__vector_size__(16)));
typedef int  V4 __attribute__ ((__vector_size__(16)));

int bar(V2);


__inline V2 baz(int a, int b)
{
    return (V4) {a, b};
}


V2 foo ()
{
    V2*     G;
    int*    H;
    V2      A;

    for (int E; E<10; E++)
    {
        G++;
        for (int F; F<E; F++)
        {
            *G = baz(0x0ffffffff, 0x0ffffffff);
            *H =   bar(__builtin_ia32_psrldqi128(A,  8))
                 | bar(__builtin_ia32_psrldqi128(A, 96));
        }
    }
}


-- 
           Summary: ICE with SSE code in extract_insn, at recog.c:2020
           Product: gcc
           Version: 4.0.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: micis at gmx dot de
 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=28421

Reply via email to