From 628168c50264147e1b8b200833f25a4e166f5cd8 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 12 Sep 2002 04:33:58 +0000 Subject: [PATCH] Fix Borland C++ optimization bug; add test for bad DOS binaries. --- Mkfiles/Makefile.bc3 | 5 +++-- test/testdos.asm | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 test/testdos.asm 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