Fix Borland C++ optimization bug; add test for bad DOS binaries.
authorH. Peter Anvin <hpa@zytor.com>
Thu, 12 Sep 2002 04:33:58 +0000 (04:33 +0000)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 12 Sep 2002 04:33:58 +0000 (04:33 +0000)
Mkfiles/Makefile.bc3
test/testdos.asm [new file with mode: 0644]

index 80049ac..d0453d1 100644 (file)
 
 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 (file)
index 0000000..f03e52d
--- /dev/null
@@ -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