r258447 - [MSVC Compat] Don't omit frame pointers if /Oy- is specified before /O2

David Majnemer via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 21 15:01:11 PST 2016


Author: majnemer
Date: Thu Jan 21 17:01:11 2016
New Revision: 258447

URL: http://llvm.org/viewvc/llvm-project?rev=258447&view=rev
Log:
[MSVC Compat] Don't omit frame pointers if /Oy- is specified before /O2

Microsoft's documentation states that specifying
/Oy- after the /O[12x] options disables frame-pointer omission.
What it does *not* state is that it also disables frame-pointer omission
if /Oy- is specified before /O[12x].

Modified:
    cfe/trunk/lib/Driver/MSVCToolChain.cpp
    cfe/trunk/test/Driver/cl-options.c

Modified: cfe/trunk/lib/Driver/MSVCToolChain.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/MSVCToolChain.cpp?rev=258447&r1=258446&r2=258447&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/MSVCToolChain.cpp (original)
+++ cfe/trunk/lib/Driver/MSVCToolChain.cpp Thu Jan 21 17:01:11 2016
@@ -659,7 +659,8 @@ static void TranslateOptArg(Arg *A, llvm
             DAL.AddFlagArg(A, Opts.getOption(options::OPT_fbuiltin));
             DAL.AddJoinedArg(A, Opts.getOption(options::OPT_O), "2");
           }
-          if (SupportsForcingFramePointer)
+          if (SupportsForcingFramePointer &&
+              !DAL.hasArgNoClaim(options::OPT_fno_omit_frame_pointer))
             DAL.AddFlagArg(A,
                            Opts.getOption(options::OPT_fomit_frame_pointer));
           if (OptChar == '1' || OptChar == '2')

Modified: cfe/trunk/test/Driver/cl-options.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=258447&r1=258446&r2=258447&view=diff
==============================================================================
--- cfe/trunk/test/Driver/cl-options.c (original)
+++ cfe/trunk/test/Driver/cl-options.c Thu Jan 21 17:01:11 2016
@@ -123,6 +123,10 @@
 // PR24003: -momit-leaf-frame-pointer
 // PR24003: -Os
 
+// RUN: %clang_cl --target=i686-pc-win32 /Oy- /O2 -### -- %s 2>&1 | FileCheck -check-prefix=Oy_2 %s
+// Oy_2: -momit-leaf-frame-pointer
+// Oy_2: -O2
+
 // RUN: %clang_cl /Zs /Oy -- %s 2>&1
 
 // RUN: %clang_cl --target=i686-pc-win32 /Oy- -### -- %s 2>&1 | FileCheck -check-prefix=Oy_ %s




More information about the cfe-commits mailing list