diff options
| author | Joe Soroka <gits@joesoroka.com> | 2011-04-12 00:17:08 -0700 |
|---|---|---|
| committer | Joe Soroka <gits@joesoroka.com> | 2011-04-12 00:17:08 -0700 |
| commit | 2b7a8eb8f56c118d8bfe75d42abd3d88b8e03495 (patch) | |
| tree | a63ad49e0493d0bc02707828756edc6479e4ba12 /tccgen.c | |
| parent | 46e2dd7c3284462a954ce1eaf61d9af29b5a9159 (diff) | |
| download | tinycc-2b7a8eb8f56c118d8bfe75d42abd3d88b8e03495.tar.gz tinycc-2b7a8eb8f56c118d8bfe75d42abd3d88b8e03495.tar.bz2 | |
use of TOK_alloca breaks cross compiler build
VLA inserts a call to alloca via enum TOK_alloca, but TOK_alloca
only exists on I386 and X86_64 targets. This patch just emits an
error at compile-time if someone tries to compile some VLA code
for a TOK_alloca-less target. The best solution might be to just
push the problem to link-time, since the existence-or-not of a
alloca implementation can only be determined by linking. It seems
like just declaring TOK_alloca unconditionally would achieve that,
but for now, this at least gets the cross compilers to build.
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -4863,6 +4863,7 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c, CType *t1; if (type->t & VT_VLA) { +#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64 int a; CValue retcval; @@ -4877,6 +4878,9 @@ static void decl_initializer(CType *type, Section *sec, unsigned long c, vswap(); vstore(); vpop(); +#else + error("variable length arrays unsupported for this target"); +#endif } else if (type->t & VT_ARRAY) { s = type->ref; n = s->c; |
