summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2002-09-12 04:33:58 +0000
committerH. Peter Anvin <hpa@zytor.com>2002-09-12 04:33:58 +0000
commit628168c50264147e1b8b200833f25a4e166f5cd8 (patch)
treea7eca34d3c068b4cdb0d8e65758e940e5b02459a
parenta607d27eb9fb97d89f635fe0c7b579d0d053b272 (diff)
downloadnasm-628168c50264147e1b8b200833f25a4e166f5cd8.tar.gz
Fix Borland C++ optimization bug; add test for bad DOS binaries.
-rw-r--r--Mkfiles/Makefile.bc35
-rw-r--r--test/testdos.asm12
2 files changed, 15 insertions, 2 deletions
diff --git a/Mkfiles/Makefile.bc3 b/Mkfiles/Makefile.bc3
index 80049ac2..d0453d1f 100644
--- a/Mkfiles/Makefile.bc3
+++ b/Mkfiles/Makefile.bc3
@@ -27,13 +27,14 @@
CC = bcc #compiler
# opimizations
-OPTFLAGS = -d -O1 -Ogmpv -k-
+OPTFLAGS = -d -O1 -Ogmp -k-
# -d = merge duplicate strings
# -O1 = optimize for size
# -Og = enable global common subexpression elimination
# -Om = enable loop invariant removal
# -Op = enable constant propagation
- # -Ov = enable strength-reduction optimization
+ # ** WARNING: DO NOT ENABLE -Ov (strength reduction) ON BORLAND C++ 3.1 **
+ # ** NASM IS KNOWN TO MISCOMPILE WITH -Ov **
# -k- = omit stack frames where practical
#output formats
OUTFORMS = -DOF_ONLY -DOF_BIN -DOF_OBJ -DOF_WIN32 -DOF_AS86
diff --git a/test/testdos.asm b/test/testdos.asm
new file mode 100644
index 00000000..f03e52d0
--- /dev/null
+++ b/test/testdos.asm
@@ -0,0 +1,12 @@
+;
+; This file was known to miscompile with the 16-bit NASM built
+; under Borland C++ 3.1, so keep it around for testing...
+;
+; The proper output looks like:
+;
+; 00000000 A10300
+; 00000003 EA0000FFFF
+;
+ org 0100h
+ mov ax,[3]
+ jmp 0FFFFh:0000