Following test code -- test.c ------------------------------- typedef struct { int x; int y[16]; } ta; typedef struct { int y[16]; } tb; void f (tb *b) { int i, j; ta *a; for (i=0, j=a->x; i<j; i++) b->y[i] = a->y[i]; } ----------------------------------------- when compiled with ----------------------------------------- gcc -O1 -ftree-vectorize -S test.c -o test.s ----------------------------------------- using ----------------------------------------- $ gcc -v Using built-in specs. Configured with: ../../../gcc-CVS-20050107/gcc-CVS-20050107/configure --host=i786-pc-linux-gnu --prefix=/usr/local/opt/gcc-4.0 --exec-prefix=/usr/local/opt/gcc-4.0 --sysconfdir=/etc --libdir=/usr/local/opt/gcc-4.0/lib --libexecdir=/usr/local/opt/gcc-4.0/libexec --sharedstatedir=/var --localstatedir=/var --program-suffix=-4.0 --with-x-includes=/usr/X11R6/include --with-x-libraries=/usr/X11R6/lib --enable-shared --enable-static --with-gnu-as --with-gnu-ld --with-stabs --enable-threads=posix --enable-version-specific-runtime-libs --disable-coverage --enable-gather-detailed-mem-stats --disable-libgcj --disable-checking --enable-multilib --with-x --enable-cmath --enable-libstdcxx-debug --enable-fast-character --enable-hash-synchronization --with-system-zlib --with-libbanshee --with-demangler-in-ld --with-arch=athlon-xp --enable-libada --enable-languages=c,c++,f95,objc,ada Thread model: posix gcc version 4.0.0 20050107 (experimental) $ ----------------------------------------- gives ----------------------------------------- test.c: In function 'f': test.c:7: error: unrecognizable insn: (insn 69 68 70 6 (set (reg:V4SI 94) (vec_concat:V4SF (mem:V2SF (reg:SI 64 [ ivtmp.66 ]) [0 S8 A8]) (vec_select:V2SF (reg:V4SI 94) (parallel [ (const_int 2 [0x2]) (const_int 3 [0x3]) ])))) -1 (insn_list:REG_DEP_TRUE 68 (nil)) (nil)) test.c:7: internal compiler error: in extract_insn, at recog.c:2020 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. ----------------------------------------- Works on x86_64 arch. (compiled by the native gcc compiled from the same sources as the one mentioned above).
I get a different error with today's compiler but that is because I am not compiling with --disable- checking. t.c:7: internal compiler error: in simplify_binary_operation, at simplify-rtx.c:2178 WTF: (set (reg:V4SI 94) (vec_concat:V4SF (mem:V2SF (reg:SI 64 [ ivtmp.66 ]) [0 S8 A8]) (vec_select:V2SF (reg:V4SI 94) (parallel [ (const_int 2 [0x2]) (const_int 3 [0x3]) ])))) Which comes from the expansion of ;; *(vect_p.22 + (vector int *) D.1440 * 16B - 16B) = M*ivtmp.66{misalignment: 0}
Subject: Bug 19350 CVSROOT: /cvs/gcc Module name: gcc Changes by: rth@gcc.gnu.org 2005-01-20 10:15:15 Modified files: gcc : ChangeLog gcc/config/i386: i386.c Log message: PR target/19350 * config/i386/i386.c (ix86_expand_vector_move_misalign): Convert to V4SFmode in SSE1 fallback load path. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7197&r2=2.7198 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&r1=1.784&r2=1.785
Fixed.