Re: [AD] broken dat and grabber?

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


Peter Wang <tjaden@xxxxxxxxxx> writes:

>  blit.s.opt.gz		-- compiled to asm with -funroll-loops

There is a bug in generated assembler for blit_from_256.  The
following code is wrong:

.L860:
	movl 124(%esp),%eax
	addl %edi,%eax
	movl 120(%esp),%esi
	movl 72(%esp),%edx
	addl (%edx,%eax,4),%esi
	movl 116(%esp),%eax
	movl 32(%eax),%eax
	movl %eax,%ecx
	movl 116(%esp),%edx
#APP
	  call *%ecx
#NO_APP
	movl %eax,%ecx
	addl 68(%esp),%ecx

Before 'call *%ecx' %edx should contain pointer to bitmap and %eax
should be line number in bitmap.  But %eax is equal to address of
write_line function instead.  Other calls to bmp_write_line are also
inlined incorrectly.  Version with function call is incorrect too.
Maybe inline assembler was changed in gcc again?

I don't use that version of gcc, someone else should report this
problem to gcc developers.

-- 
Michael Bukin



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/