]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix auto statement
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 12 Apr 2019 11:23:49 +0000 (13:23 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 12 Apr 2019 11:23:49 +0000 (13:23 +0200)
src/emit/emit.c

index 5403af730ed0124d807b62a73e85ef03ebd63f20..180d02275dc7cf626c98ec9992957d1415159bb4 100644 (file)
@@ -1198,9 +1198,9 @@ ANN static Instr emit_stmt_autoptr_init(const Emitter emit, const Type type) {
 ANN static m_bool emit_stmt_auto(const Emitter emit, const Stmt_Auto stmt) { GWDEBUG_EXE
   CHECK_BB(emit_exp(emit, stmt->exp, 0))
   const Instr s1 = emit_add_instr(emit, MemSetImm);
+  emit_push_stack(emit);
   Instr cpy = stmt->is_ptr ? emit_stmt_autoptr_init(emit, stmt->v->type) : NULL;
   const m_uint ini_pc  = emit_code_size(emit);
-  emit_push_stack(emit);
   emit_add_instr(emit, GWOP_EXCEPT);
   const Instr loop = emit_add_instr(emit, stmt->is_ptr ? AutoLoopPtr : AutoLoop);
   const Instr end = emit_add_instr(emit, BranchEqInt);
@@ -1211,8 +1211,6 @@ ANN static m_bool emit_stmt_auto(const Emitter emit, const Stmt_Auto stmt) { GWD
   if(stmt->is_ptr) {
     loop->m_val2 = (m_uint)stmt->v->type;
     cpy->m_val = stmt->v->offset;
-    const Instr release = emit_add_instr(emit, ObjectRelease);
-    release->m_val = stmt->v->offset;
   }
   const Instr tgt = emit_add_instr(emit, Goto);
   end->m_val = emit_code_size(emit);