http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47744
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-18 14:05:00 UTC --- Another testcase: [hjl@gnu-33 ilp32-24]$ cat x.i typedef long unsigned int size_t; typedef long int ssize_t; typedef ssize_t index_type; typedef __int128_t GFC_INTEGER_16; typedef struct descriptor_dimension { index_type _stride; index_type _lbound; index_type _ubound; } descriptor_dimension; typedef struct { GFC_INTEGER_16 *data; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i16; void matmul_i16 (gfc_array_i16 * const restrict retarray, gfc_array_i16 * const restrict a, GFC_INTEGER_16 bbase_yn) { GFC_INTEGER_16 * restrict dest; index_type rxstride, rystride; index_type x, y, n, count, xcount; GFC_INTEGER_16 * restrict dest_y; GFC_INTEGER_16 s; const GFC_INTEGER_16 * restrict abase_n; rxstride = ((retarray)->dim[0]._stride); rystride = ((retarray)->dim[1]._stride); xcount = ((a)->dim[0]._ubound + 1 - (a)->dim[0]._lbound); dest = retarray->data; dest_y = &dest[y*rystride]; for (x = 0; x < xcount; x++) dest_y[x] += abase_n[x] * bbase_yn; for (x = 0; x < xcount; x++) { for (n = 0; n < count; n++) dest_y[x*rxstride] = (GFC_INTEGER_16) 0; } } [hjl@gnu-33 ilp32-24]$ make /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -std=gnu99 -ftree-vectorize x.i x.i: In function \u2018matmul_i16\u2019: x.i:36:1: error: insn does not satisfy its constraints: (insn 113 65 66 4 (set (reg:TI 0 ax) (mem:TI (zero_extend:DI (plus:SI (reg:SI 4 si [orig:112 ivtmp.28 ] [112]) (reg:SI 39 r10 [orig:98 dest_y ] [98]))) [6 MEM[base: dest_y_18, index: ivtmp.28_57, offset: 0B]+0 S16 A128])) x.i:30 60 {*movti_internal_rex64} (nil)) x.i:36:1: internal compiler error: in reload_cse_simplify_operands, at postreload.c:403 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make: *** [x.s] Error 1 [hjl@gnu-33 ilp32-24]$