[Bug c/27263] New: armv5te-linux-gnueabi-gcc-4.1 fails to compile libquicktime-0.9.7-0.4/plugins/opendivx/encore50/text_code_mb.c
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
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
Reply to: