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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits