From 665eb916a204fa559a30648a08272c84a562c41c Mon Sep 17 00:00:00 2001 From: Rangi Date: Sat, 1 May 2021 22:54:26 -0400 Subject: [PATCH] `OPT L` acts like `-L` and *dis*ables optimizing LD to LDH Fixes #867 --- src/asm/opt.c | 4 ++-- src/asm/rgbasm.5 | 4 ++-- test/asm/opt.asm | 4 +++- test/asm/opt.err | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/asm/opt.c b/src/asm/opt.c index 657e08e3..02177441 100644 --- a/src/asm/opt.c +++ b/src/asm/opt.c @@ -81,7 +81,7 @@ void opt_Parse(char *s) case 'L': if (s[1] == '\0') - opt_L(true); + opt_L(false); else error("Option 'L' does not take an argument\n"); break; @@ -97,7 +97,7 @@ void opt_Parse(char *s) switch (s[1]) { case 'L': if (s[2] == '\0') - opt_L(false); + opt_L(true); else error("Option '!L' does not take an argument\n"); break; diff --git a/src/asm/rgbasm.5 b/src/asm/rgbasm.5 index f21a72eb..d38b5353 100644 --- a/src/asm/rgbasm.5 +++ b/src/asm/rgbasm.5 @@ -1946,14 +1946,14 @@ can be used to change some of the options during assembling from within the sour takes a comma-separated list of options as its argument: .Bd -literal -offset indent PUSHO - OPT g.oOX, Wdiv, !L ; acts like command-line -g.oOX -Wdiv and omitting -L + OPT g.oOX, Wdiv, L ; acts like command-line -g.oOX -Wdiv -L DW `..ooOOXX ; uses the graphics constant characters from OPT g PRINTLN $80000000/-1 ; prints a warning about division LD [$FF88], A ; encoded as LD, not LDH POPO DW `00112233 ; uses the default graphics constant characters PRINTLN $80000000/-1 ; no warning by default - LD [$FF88], A ; optimized to use LDH if -L was passed + LD [$FF88], A ; optimized to use LDH by default .Ed .Pp The options that OPT can modify are currently: diff --git a/test/asm/opt.asm b/test/asm/opt.asm index 256b91ab..0dfdfd75 100644 --- a/test/asm/opt.asm +++ b/test/asm/opt.asm @@ -1,7 +1,9 @@ SECTION "test", ROM0 + opt !L ; already the default, but tests parsing "!L" + pusho - opt p42, !L, Wno-div + opt p42, L, Wno-div ds 1 ld [$ff88], a println $8000_0000 / -1 diff --git a/test/asm/opt.err b/test/asm/opt.err index 50eb8bbd..46551a45 100644 --- a/test/asm/opt.err +++ b/test/asm/opt.err @@ -1,2 +1,2 @@ -warning: opt.asm(12): [-Wdiv] +warning: opt.asm(14): [-Wdiv] Division of -2147483648 by -1 yields -2147483648