From 1ca685f887310b5cbdc415cdfc3a578dbc8d82d8 Mon Sep 17 00:00:00 2001 From: grischka Date: Wed, 25 May 2016 18:52:08 +0200 Subject: [PATCH] tccgen: gen_assign_cast(): cannot cast struct to scalar The case below previously was causing an assertion failure in the target specific generator. It probably is not incorrect not to allow this even if gcc does. struct S { long b; }; void f(struct S *x) { struct S y[1] = { *x }; } --- tccgen.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tccgen.c b/tccgen.c index 55befb1..d7f8c0d 100644 --- a/tccgen.c +++ b/tccgen.c @@ -2523,10 +2523,13 @@ static void gen_assign_cast(CType *dt) case VT_LLONG: if (sbt == VT_PTR || sbt == VT_FUNC) { tcc_warning("assignment makes integer from pointer without a cast"); + } else if (sbt == VT_STRUCT) { + goto case_VT_STRUCT; } /* XXX: more tests */ break; case VT_STRUCT: + case_VT_STRUCT: tmp_type1 = *dt; tmp_type2 = *st; tmp_type1.t &= ~(VT_CONSTANT | VT_VOLATILE);