This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Further observations regarding alloca on i586-pc-linux-gnu


On Sun, Aug 23, 1998 at 08:20:05PM +0200, Martin von Loewis wrote:
> > Note that the exact same effect would happen if alloca was not a
> > builtin.
> 
> No, it wouldn't. The portable alloca would not reclaim the memory
> until the next alloca call, and then only if the previous call was
> deeper on stack.

No no, I meant the olde tyme non-portable alloca.  You know:

	alloca: popl	%edx
		subl	%eax, %esp
		movl	%esp, %eax
		jmp	*%edx

> > Note that if you mind sequence points like you ought, you get
> > correct results.
> 
> The original example was using alloca as a default argument. It seems
> that g++ currently does not support that, an alloca call must occur as
> a full expression in itself, not inside a full expression.

"Full expression" isn't a term I'm familiar with.  Besides,

	(tmp = alloca(n), foo(tmp, blah));

works just fine.  It seems that alloca must be the first thing
after a sequence point.  How to enforce or even warn about this
I have absolutely no idea.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]