From dc790977d409631ad89306b4e87b8ff0313fcbde Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Tue, 3 Mar 2015 17:34:49 +0000
Subject: [PATCH] py: In inline assembler, reset labels on code-size pass.

---
 py/emitinlinethumb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/py/emitinlinethumb.c b/py/emitinlinethumb.c
index 57fac1729..220ff12c7 100644
--- a/py/emitinlinethumb.c
+++ b/py/emitinlinethumb.c
@@ -63,7 +63,6 @@ emit_inline_asm_t *emit_inline_thumb_new(mp_uint_t max_num_labels) {
     emit_inline_asm_t *emit = m_new_obj(emit_inline_asm_t);
     emit->max_num_labels = max_num_labels;
     emit->label_lookup = m_new(qstr, max_num_labels);
-    memset(emit->label_lookup, 0, emit->max_num_labels * sizeof(qstr));
     emit->as = asm_thumb_new(max_num_labels);
     return emit;
 }
@@ -78,6 +77,9 @@ STATIC void emit_inline_thumb_start_pass(emit_inline_asm_t *emit, pass_kind_t pa
     emit->pass = pass;
     emit->scope = scope;
     emit->error_slot = error_slot;
+    if (emit->pass == MP_PASS_CODE_SIZE) {
+        memset(emit->label_lookup, 0, emit->max_num_labels * sizeof(qstr));
+    }
     asm_thumb_start_pass(emit->as, pass == MP_PASS_EMIT ? ASM_THUMB_PASS_EMIT : ASM_THUMB_PASS_COMPUTE);
     asm_thumb_entry(emit->as, 0);
 }
-- 
GitLab