Catch array[index] with unknown sizeof(*array)

We could support this for index == 0, but GCC doesn't bother, so why should we?
This commit is contained in:
Daniel Glöckner 2010-03-15 22:37:41 +01:00
parent 95b9a477b6
commit 4d05a6319d

View File

@ -1548,11 +1548,14 @@ ST_FUNC void gen_op(int op)
} }
type1 = vtop[-1].type; type1 = vtop[-1].type;
type1.t &= ~VT_ARRAY; type1.t &= ~VT_ARRAY;
u = pointed_size(&vtop[-1].type);
if (u < 0)
error("unknown array element size");
#ifdef TCC_TARGET_X86_64 #ifdef TCC_TARGET_X86_64
vpushll(pointed_size(&vtop[-1].type)); vpushll(u);
#else #else
/* XXX: cast to int ? (long long case) */ /* XXX: cast to int ? (long long case) */
vpushi(pointed_size(&vtop[-1].type)); vpushi(u);
#endif #endif
gen_op('*'); gen_op('*');
#ifdef CONFIG_TCC_BCHECK #ifdef CONFIG_TCC_BCHECK