On 6/13/19 10:46 AM, Tom Tromey wrote:
"Jeff" == Jeff Law <l...@redhat.com> writes:
Jeff> I'd like to move C-alloca support to the ash heap of history. But I'm
Jeff> not sure we can realistically do that.
Are there still platforms or compilers in use where it's needed?
For gdb I was planning to just remove these calls.
The only implementation I know about is Doug Gwyn's alloca.
A Google search returns a pointer to QNX CAR that documents it
with the following note:
* By default, alloca() is implemented as __builtin_alloca().
If you compile with the -fno-builtin option, you'll use
the libc version of alloca(), which is a cover for malloc()
and behaves in a slightly different manner:
- It keeps track of all blocks allocated with alloca() and
reclaims any that are found to be deeper in the stack than
the current invocation. It therefore doesn't reclaim storage
as soon as it becomes invalid, but it will do so eventually.
- As a special case, alloca(0) reclaims storage without
allocating any. You can use this feature to force garbage
collection.
The implementation details aren't important. What matters is
that to call the library implementation one has to prevent GCC
from treating alloca as a built-in and eliminating the zero size
calls.
When the function is not treated as a built-in no warnings for
calls to it are issued and so no problem for us to solve.
Martin
http://www.qnx.com/developers/docs/qnxcar2/index.jsp?topic=%2Fcom.qnx.doc.neutrino.lib_ref%2Ftopic%2Fa%2Falloca.html