From 2b7a8eb8f56c118d8bfe75d42abd3d88b8e03495 Mon Sep 17 00:00:00 2001 From: Joe Soroka Date: Tue, 12 Apr 2011 00:17:08 -0700 Subject: [PATCH] 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. --- tccgen.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tccgen.c b/tccgen.c index beb88af1..a4897f66 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;