Author: tnorthover Date: Fri Jan 27 11:53:42 2017 New Revision: 293311 URL: http://llvm.org/viewvc/llvm-project?rev=293311&view=rev Log: ARM-Darwin: re-enable -momit-leaf-frame-pointer.
In r279546 I disabled all frame pointer elimination at the front-end on ARM-Darwin (and warned about it) because before that the backend had been silently ignoring these options. It turns out we didn't ignore -momit-leaf-frame-pointer though, just the more general -fomit-frame-pointer. So this re-enables passing that down to CodeGen so that everything really does continue working as before (with better diagnostics). Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/Driver/frame-pointer-elim.c Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=293311&r1=293310&r2=293311&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jan 27 11:53:42 2017 @@ -1109,10 +1109,6 @@ Darwin::TranslateArgs(const DerivedArgLi options::OPT_fno_omit_frame_pointer, false)) getDriver().Diag(clang::diag::warn_drv_unsupported_opt_for_target) << "-fomit-frame-pointer" << BoundArch; - if (Args.hasFlag(options::OPT_momit_leaf_frame_pointer, - options::OPT_mno_omit_leaf_frame_pointer, false)) - getDriver().Diag(clang::diag::warn_drv_unsupported_opt_for_target) - << "-momit-leaf-frame-pointer" << BoundArch; } return DAL; Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=293311&r1=293310&r2=293311&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Fri Jan 27 11:53:42 2017 @@ -3455,7 +3455,7 @@ static bool areOptimizationsEnabled(cons return false; } -static bool mustUseFramePointerForTarget(const llvm::Triple &Triple) { +static bool mustUseNonLeafFramePointerForTarget(const llvm::Triple &Triple) { switch (Triple.getArch()){ default: return false; @@ -3521,7 +3521,7 @@ static bool shouldUseFramePointer(const if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer, options::OPT_fomit_frame_pointer)) return A->getOption().matches(options::OPT_fno_omit_frame_pointer) || - mustUseFramePointerForTarget(Triple); + mustUseNonLeafFramePointerForTarget(Triple); if (Args.hasArg(options::OPT_pg)) return true; @@ -3533,8 +3533,7 @@ static bool shouldUseLeafFramePointer(co const llvm::Triple &Triple) { if (Arg *A = Args.getLastArg(options::OPT_mno_omit_leaf_frame_pointer, options::OPT_momit_leaf_frame_pointer)) - return A->getOption().matches(options::OPT_mno_omit_leaf_frame_pointer) || - mustUseFramePointerForTarget(Triple); + return A->getOption().matches(options::OPT_mno_omit_leaf_frame_pointer); if (Args.hasArg(options::OPT_pg)) return true; Modified: cfe/trunk/test/Driver/frame-pointer-elim.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/frame-pointer-elim.c?rev=293311&r1=293310&r2=293311&view=diff ============================================================================== --- cfe/trunk/test/Driver/frame-pointer-elim.c (original) +++ cfe/trunk/test/Driver/frame-pointer-elim.c Fri Jan 27 11:53:42 2017 @@ -49,9 +49,9 @@ // RUN: %clang -### -target armv7s-apple-ios8.0 -momit-leaf-frame-pointer %s 2>&1 | \ // RUN: FileCheck --check-prefix=WARN-OMIT-LEAF-7S %s -// WARN-OMIT-LEAF-7S: warning: optimization flag '-momit-leaf-frame-pointer' is not supported for target 'armv7s' +// WARN-OMIT-LEAF-7S-NOT: warning: optimization flag '-momit-leaf-frame-pointer' is not supported for target 'armv7s' // WARN-OMIT-LEAF-7S: "-mdisable-fp-elim" -// WARN-OMIT-LEAF-7S-NOT: "-momit-leaf-frame-pointer" +// WARN-OMIT-LEAF-7S: "-momit-leaf-frame-pointer" // On the PS4, we default to omitting the frame pointer on leaf functions // (OMIT_LEAF check line is above) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits