aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Soroka <gits@joesoroka.com>2011-04-12 00:17:08 -0700
committerJoe Soroka <gits@joesoroka.com>2011-04-12 00:17:08 -0700
commit2b7a8eb8f56c118d8bfe75d42abd3d88b8e03495 (patch)
treea63ad49e0493d0bc02707828756edc6479e4ba12
parent46e2dd7c3284462a954ce1eaf61d9af29b5a9159 (diff)
downloadtinycc-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.
-rw-r--r--tccgen.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/tccgen.c b/tccgen.c
index beb88af..a4897f6 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -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;