[LLVMdev] CWriter outputs non-portable use of alloca.h

John Criswell criswell at cs.uiuc.edu
Mon Jun 16 17:34:01 PDT 2003

Brian R. Gaeke wrote:
> Hi,
> My recent refactoring of the (machine-dependent) use of <alloca.h>
> does not attempt to change CWriter's behavior of emitting a #include
> for <alloca.h>. FreeBSD does not have <alloca.h>, so this would cause
> trouble.
> We could change it to emit an #ifndef __FreeBSD__...#endif around
> #include <alloca.h>.  I suggest this because, I'm guessing, whether or
> not the CWriter outputs pretty code is not of utmost importance.
> Any counter-suggestions?

	Well, this should be fixed in the recent autoconf stuff that I've got 
working locally in my working directory.  I'd suggest using the 
HAVE_ALLOCA_H macro and plugging its definition into Makefile.Linux and 
Makefile.Sun until I check autoconf in.

	What would be better yet is to modify the code so that it does not use 
alloca() at all.  There seems to be little reason to use it aside from 
convenience (but perhaps I have missed something).  Using normal 
allocation routines (malloc, new) would be more portable anyway.  I 
considered doing that just last week, but decided to leave it for now. 
If you're familiar with that code, I'd recommend changing it.

	Every man page for alloca I've seen (Linux, Solaris, NetBSD) 
essentially reads "alloca() is cool, but don't use it!!"	:)

-- John T.

> -Brian

* John T. Criswell                         Email: criswell at uiuc.edu *

More information about the llvm-dev mailing list