diff lwasm/lwasm.c @ 211:6f2e18f1fe67

Improve autobranchlength pragma Improve detection of 8 bit relative offsets when autobranchlength is in effect. This should eliminate all but the most obscure corner cases where the 16 bit mode is selected when 8 bit mode will do.
author William Astle <lost@l-w.ca>
date Sat, 09 Jun 2012 17:23:04 -0600
parents 5d969517db74
children 398773d7e504
line wrap: on
line diff
--- a/lwasm/lwasm.c	Sat Jun 09 16:25:19 2012 -0600
+++ b/lwasm/lwasm.c	Sat Jun 09 17:23:04 2012 -0600
@@ -125,9 +125,18 @@
 	case lwasm_expr_linelen:
 		{
 			line_t *cl = ptr;
-			if (cl -> len == -1)
-				return NULL;
-			return lw_expr_build(lw_expr_type_int, cl -> len);
+			if (cl -> len != -1)
+				return lw_expr_build(lw_expr_type_int, cl -> len);
+				
+			if (cl -> as -> pretendmax)
+			{
+				if (cl -> maxlen != 0)
+				{
+					fprintf(stderr, "Pretending max, len = %d\n", cl -> maxlen);
+					return lw_expr_build(lw_expr_type_int, cl -> maxlen);
+				}
+			}
+			return NULL;
 		}
 		break;