Target: armv5te-linux-gnueabi Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/armv5te-linux-gnueabi/include/c++/4.1.0 --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --with-cpu=arm926ej-s --with-tune=arm10tdmi --with-float=softfp --with-fpu=vfp --enable-checking=release --program-prefix=armv5te-linux-gnueabi- --includedir=/usr/armv5te-linux-gnueabi/include --build=i486-linux-gnu --host=i486-linux-gnu --target=armv5te-linux-gnueabi Thread model: posix gcc version 4.1.0
Bug: libquicktime-0.9.7-0.4$ (cd plugins/opendivx/encore50/; armv5te-linux-gnueabi-gcc-4.1 -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../include/quicktime -O3 -funroll-all-loops -fomit-frame-pointer -finline-functions -Wall -Winline -MT text_code_mb.lo -MD -MP -MF .deps/text_code_mb.Tpo -c text_code_mb.c -fPIC -DPIC -o .libs/text_code_mb.o) text_code_mb.c: In function 'CodeMB': text_code_mb.c:233: error: unrecognizable insn: (insn 1773 1770 1772 50 (set (reg:HI 12 ip) (mem:HI (plus:SI (mult:SI (reg:SI 11 fp [orig:138 ivtmp.674 ] [138]) (const_int 2 [0x2])) (reg/v/f:SI 8 r8 [orig:154 rcoeff_ind ] [154])) [3 S4 A32])) -1 (nil) (nil)) text_code_mb.c:233: internal compiler error: in extract_insn, at recog.c:2084 Note: the same file can be compiled with -O1 (but not with -O2), or it can be compiled with -O3 but not with -funroll-all-loops. Some buffer overflow maybe? Pre-processed source (relevant bit only): Void CodeMB(Vop *curr, Vop *rec_curr, Vop *comp, Int x_pos, Int y_pos, UInt width, Int QP, Int Mode, Int *qcoeff) { Int k; Int fblock[6][8][8]; Int coeff[384]; Int *coeff_ind; Int *qcoeff_ind; Int* rcoeff_ind; Int x=0, y=0; SInt *current=((void *)0), *recon, *compensated = ((void *)0); UInt xwidth=0; Int iblock[6][8][8]; Int rcoeff[6*64]; Int i, j; Int type; SInt tmp[64]; Int s; int operation = curr->prediction_type; Int max = GetVopBrightWhite(curr); coeff_ind = coeff; qcoeff_ind = qcoeff; rcoeff_ind = rcoeff; for (k = 0; k < 6; k++) { switch (k) { case 0: x = x_pos; y = y_pos; xwidth = width; current = (SInt *) GetImageData (GetVopY (curr)); break; case 1: x = x_pos + 8; y = y_pos; xwidth = width; current = (SInt *) GetImageData (GetVopY (curr)); break; case 2: x = x_pos; y = y_pos + 8; xwidth = width; current = (SInt *) GetImageData (GetVopY (curr)); break; case 3: x = x_pos + 8; y = y_pos + 8; xwidth = width; current = (SInt *) GetImageData (GetVopY (curr)); break; case 4: x = x_pos / 2; y = y_pos / 2; xwidth = width / 2; current = (SInt *) GetImageData (GetVopU (curr)); break; case 5: x = x_pos / 2; y = y_pos / 2; xwidth = width / 2; current = (SInt *) GetImageData (GetVopV (curr)); break; default: break; } BlockPredict (current, x, y, xwidth, fblock[k]); } for (k = 0; k < 6; k++) { s = 0; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) tmp[s++] = (SInt) fblock[k][i][j]; fdct_enc(tmp); for (s = 0; s < 64; s++) coeff_ind[s] = (Int) tmp[s]; if (k < 4) type = 1; else type = 2; BlockQuantH263(coeff_ind,QP,Mode,type,qcoeff_ind, GetVopBrightWhite(curr),1); BlockDequantH263(qcoeff_ind,QP,Mode,type,rcoeff_ind,1, 0, GetVopBitsPerPixel(curr)); for (s = 0; s < 64; s++) tmp[s] = (SInt) rcoeff_ind[s]; idct_enc(tmp); s = 0; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) iblock[k][i][j] = (Int)tmp[s++]; coeff_ind += 64; qcoeff_ind += 64; rcoeff_ind += 64; if (Mode == 0||Mode==2) for (i = 0; i < 8; i++) for (j = 0; j < 8; j ++) iblock[k][i][j] = (((GetVopBrightWhite(curr)) < ((((0) > (iblock[k][i][j])) ? (0) : (iblock[k][i][j])))) ? (GetVopBrightWhite(curr)) : ((((0) > (iblock[k][i][j])) ? (0) : (iblock[k][i][j])))); switch (k) { case 0: case 1: case 2: continue; case 3: recon = (SInt *) GetImageData (GetVopY (rec_curr)); if (operation == 1) compensated = (SInt *) GetImageData (GetVopY (comp)); BlockRebuild (recon, compensated, operation, max, x_pos, y_pos, width, 16, iblock[0]); BlockRebuild (recon, compensated, operation, max, x_pos + 8, y_pos, width, 16, iblock[1]); BlockRebuild (recon, compensated, operation, max, x_pos, y_pos + 8, width, 16, iblock[2]); BlockRebuild (recon, compensated, operation, max, x_pos + 8, y_pos + 8, width, 16, iblock[3]); continue; case 4: recon = (SInt *) GetImageData (GetVopU (rec_curr)); if (operation == 1) compensated = (SInt *) GetImageData (GetVopU (comp)); BlockRebuild (recon, compensated, operation, max, x_pos/2, y_pos/2, width/2, 8, iblock[4]); continue; case 5: recon = (SInt *) GetImageData (GetVopV (rec_curr)); if (operation == 1) compensated = (SInt *) GetImageData (GetVopV (comp)); BlockRebuild (recon, compensated, operation, max, x_pos/2, y_pos/2, width/2, 8, iblock[5]); continue; } } return; } -- Summary: armv5te-linux-gnueabi-gcc-4.1 fails to compile libquicktime-0.9.7- 0.4/plugins/opendivx/encore50/text_code_mb.c Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: peter dot kourzanov at xs4all dot nl GCC build triplet: i486-linux-gnu GCC host triplet: i486-linux-gnu GCC target triplet: armv5te-linux-gnueabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27263