On 12/30/2015 05:05 AM, Florian Weimer wrote:
On 12/30/2015 08:32 AM, Jeff Law wrote:
On 12/29/2015 11:06 AM, Florian Weimer wrote:
About fifteen years ago, GCC apparently did not seem to support calling
alloca as a nested expression in a function argument. I can't image how
this limitation survived the switch to treessa. Is it true that it's
long gone now?
I don't explicitly recall it going away.
So does this restriction still exist or not?
I would think not.
Older (non-compiler) alloca implementations probably relied on the frame
pointer and manipulated the stack pointer directly. This could
interfere with pushing arguments on the stack. But the days where such
trickery could work at least in some cases are long gone.
There were multiple approaches, some even used malloc under the hood
IIRC. But it's been a long time since anyone worried about supporting
alloca outside the compiler and the details of the various
implementations have long since been dropped out my brain.
We mention the restriction in the glibc manual, which is why I'm
interested in this topic. I suspect we should not mention this
restriction anymore.
Agreed.
jeff