egcs-19990907 on i686 generates invalid assembly

Horst von Brand vonbrand@inf.utfsm.cl
Thu Sep 9 06:34:00 GMT 1999


/*
 * egcs-19990907 -O2 -fomit-frame-pointer -march=i686
 *
 *  A "salb $4, %esi" instruction is generated, which is clearly invalid
 *  (%esi isn't a byte register). The original case (out of linux-2.3.16)
 *  gave a "salb $4, %edi"
 *
 * binutils-2.9.5.0.11, linux
 *
 * egcs-19990830 doesn't do this.
 */
 
int f()
{
  unsigned char hrs, min;

  min = ((min / 10) << 4) + min % 10;
  hrs = ((hrs / 10) << 4) + hrs % 10;

  return hrs + min;
}
-- 
Dr. Horst H. von Brand                       mailto:vonbrand@inf.utfsm.cl
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


More information about the Gcc-bugs mailing list