summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-03-03 17:34:49 +0000
committerDamien George <damien.p.george@gmail.com>2015-03-03 17:34:49 +0000
commitdc790977d409631ad89306b4e87b8ff0313fcbde (patch)
treee505d4827516a0a106d46e5a385c8b89fc3de291 /py
parent3665d0b2ffd41dac6be01016ac15afc0157ac393 (diff)
downloadmicropython-dc790977d409631ad89306b4e87b8ff0313fcbde.tar.gz
micropython-dc790977d409631ad89306b4e87b8ff0313fcbde.zip
py: In inline assembler, reset labels on code-size pass.
Diffstat (limited to 'py')
-rw-r--r--py/emitinlinethumb.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/py/emitinlinethumb.c b/py/emitinlinethumb.c
index 57fac17290..220ff12c71 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);
}