diff --git a/x86_64-gen.c b/x86_64-gen.c index e33a38a..80a4822 100644 --- a/x86_64-gen.c +++ b/x86_64-gen.c @@ -474,7 +474,10 @@ void load(int r, SValue *sv) gen_le32(fc); } } else if (v == VT_LOCAL) { - orex(1,0,r,0x8d); /* lea xxx(%ebp), r */ + if (sv->sym->type.t & VT_VLA) + orex(1,0,r,0x8b); /* mov xxx(%ebp), r */ + else + orex(1,0,r,0x8d); /* lea xxx(%ebp), r */ gen_modrm(r, VT_LOCAL, sv->sym, fc); } else if (v == VT_CMP) { orex(0,r,0,0);