GCC-H8300: major problems with -mint32

Toshi Morita tm2@best.com
Wed Mar 28 15:03:00 GMT 2001


False alarm...it looks like GCC generates an SImode subtract to clear
a register, then it's converted to two HImode subtracts later
when the insn is emitted.

Toshi


> 
> version: CVS
>    host: i686-linux
>  target: h8300-coff
> 
> It looks like gcc has some serious problems generating code for the
> H8/300 series when -mint32 is used. Here's a few samples from
> engine_c.i compiled at -O2 -mint32 -S:
> 
> _breakpoints:
>         push    r6
>         mov.w   r7,r6
>         mov.w   #8,r3
>         sub.w   r3,sp
>         push    r4
>         push    r5
>         mov.w   r0,@(-4,r6)
>         mov.w   r1,@(-2,r6)
>         mov.w   @_g_num_breakpoints,r4
>         mov.w   @_g_num_breakpoints+2,r5
>         sub.w   r2,r2			<- ???
>         sub.w   r3,r3			<- ???
>         mov.w   r2,@(-8,r6)
>         mov.w   r3,@(-6,r6)
>         mov.w   r4,r4			<- ???
>         bgt     .L15
>         bne     .L13
>         mov.w   r5,r5			<- ???
>         beq     .L13
> 
> This just doesn't look right...
> 
> engine_c.i is in stress-1.17.tar.gz in the usual place:
> 
> ftp://shell14.ba.best.com/pub.t/tm2/stress-1.17.tar.gz
> 
> Toshi
> 
> 
> 



More information about the Gcc-bugs mailing list