# HG changeset patch # User William Astle # Date 1544674700 25200 # Node ID 62720ac9e28db362d3a23ed85e58f2fa955bca6c # Parent ceed9fb3a362b6987a44ceb570e8504165606489 Exclude extended indirect from operandsizewarning pragma Constant indirect addressing is only available in "extended" variety (16 bits) so make sure no warning appears when plain extended indirect addressing is used. diff -r ceed9fb3a362 -r 62720ac9e28d lwasm/insn_gen.c --- a/lwasm/insn_gen.c Wed Dec 12 21:17:21 2018 -0700 +++ b/lwasm/insn_gen.c Wed Dec 12 21:18:20 2018 -0700 @@ -322,7 +322,8 @@ } else if (l -> lint == 2 && lw_expr_istype(e, lw_expr_type_int) && CURPRAGMA(l, PRAGMA_OPERANDSIZE)) { - if (l -> pb != 0xAF && l -> pb != 0xB0) + // note that W relative and extended indirect must be 16 bits + if (l -> pb != 0xAF && l -> pb != 0xB0 && l -> pb != 0x9f) { if ((i >= -128 && i <= 127) || i >= 0xFF80) { diff -r ceed9fb3a362 -r 62720ac9e28d lwasm/insn_indexed.c --- a/lwasm/insn_indexed.c Wed Dec 12 21:17:21 2018 -0700 +++ b/lwasm/insn_indexed.c Wed Dec 12 21:18:20 2018 -0700 @@ -800,7 +800,8 @@ lwasm_register_error(as, l, E_EXPRESSION_NOT_RESOLVED); } } - else if (l -> lint == 2 && CURPRAGMA(l, PRAGMA_OPERANDSIZE) && (l -> pb != 0xAF && l -> pb != 0xB0)) + // note that extended indirect (post byte 0x9f) can only be 16 bits + else if (l -> lint == 2 && CURPRAGMA(l, PRAGMA_OPERANDSIZE) && (l -> pb != 0xAF && l -> pb != 0xB0 && l -> pb != 0x9f)) { int offs; e = lwasm_fetch_expr(l, 0);