I noticed this when attempting to build a program with
a fairly large amount of NASM code with 0.98.31 (was,
and still am, using 0.98).
My code is using a macro which uses an %if/%elif
(multiple)/%else/%endif chain. 0.98 has no trouble
with it, but in 0.98.31, even with -O0, if the %if
does not resolve to true, then the %elif's seem to be
ignored, and the %else is never reached. The code
STILL compiles without flagging an error, but
generates invalid code. If no %elif is present, %else
appears to function corectly.
My project's code specifies an %if and multiple %elif
cases which all generate code, followed by an %else
which flags an %error, if it's reached. I'm attaching
a source file which, while not using multiple %elif's,
still shows the error in the generated code. It also
shows that an %else without %elif works fine. Source
is for a bin format output (DOS .COM file).
Thank you for your time,