diff lwasm/lwasm.c @ 433:b1adf549d181

Add some debugging instrumentation for tracking an expression bug There's no reason not to keep the instrumentation so into the repo it goes.
author William Astle <lost@l-w.ca>
date Mon, 23 Jan 2017 22:54:19 -0700
parents 58cafa61ab40
children cad5937314cb
line wrap: on
line diff
--- a/lwasm/lwasm.c	Fri Nov 18 21:25:43 2016 -0700
+++ b/lwasm/lwasm.c	Mon Jan 23 22:54:19 2017 -0700
@@ -64,15 +64,18 @@
 	importlist_t *im;
 	struct symtabe *s;
 	
+	debug_message(as, 225, "eval var: look up %s", var);
 	s = lookup_symbol(as, as -> cl, var);
 	if (s)
 	{
+		debug_message(as, 225, "eval var: symbol found %s = %s (%p)", s -> symbol, lw_expr_print(s -> value), s);
 		e = lw_expr_build(lw_expr_type_special, lwasm_expr_syment, s);
 		return e;
 	}
 	
 	if (as -> undefzero)
 	{
+		debug_message(as, 225, "eval var: undefined symbol treated as 0");
 		e = lw_expr_build(lw_expr_type_int, 0);
 		return e;
 	}
@@ -91,6 +94,7 @@
 	// check for "undefined" to import automatically
 	if ((as -> passno != 0) && !im && CURPRAGMA(as -> cl, PRAGMA_UNDEFEXTERN))
 	{
+		debug_message(as, 225, "eval var: importing undefined symbol");
 		im = lw_alloc(sizeof(importlist_t));
 		im -> symbol = lw_strdup(var);
 		im -> next = as -> importlist;
@@ -108,6 +112,7 @@
 	{
 		lwasm_register_error2(as, as -> cl, E_SYMBOL_UNDEFINED, "%s", var);
 	}
+	debug_message(as, 225, "eval var: undefined symbol - returning NULL");
 	return NULL;
 }
 
@@ -1420,6 +1425,7 @@
 	// simplify each expression
 	for (i = 0, le = cl -> exprs; le; le = le -> next, i++)
 	{
+		debug_message(as, 101, "Reduce expressions: (pre) exp[%d] = %s", i, lw_expr_print(le -> expr));
 		lwasm_reduce_expr(as, le -> expr);
 		debug_message(as, 100, "Reduce expressions: exp[%d] = %s", i, lw_expr_print(le -> expr));
 	}