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

CVS: cvs.openbsd.org: src



CVSROOT:	/cvs
Module name:	src
Changes by:	miod_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org	2004/07/28 02:47:12

Modified files:
	gnu/egcs/gcc/config/m88k: m88k.c m88k.h 
	sys/arch/m88k/include: va-m88k.h 

Log message:
In the never-ending saga of getting gcc to work reliably on m88k, today's
changes address incorrect stack usage, when optimization needs more
nameless temporary values than available registers, and has to save them
on stack.

In some (rare) circumstances, it will compute a stack address _outside_
the current function local storage space, overwriting the caller's stack.

Most of the time, this only affects the "outgoing argument area", which is
harmless if it has not been populated; this explains why it has not been
noticed earlier.

Since I see no easy way to fix this, I decided to go the simpler way of
removing this ougoing argument area. This not only reduces stack usage,
but also makes varargs/stdarg code smaller and faster; also functions which
get their first few arguments in registers, then some on the stack, then
some in registers again, will not allocate stack space for the second
set of arguments passed through registers.

This is an ABI change, we are no longer 88Open compliant (have we ever
been?).



Visit your host, monkey.org