[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: