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