summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/lib/Driver
diff options
context:
space:
mode:
authorgkoehler <gkoehler@openbsd.org>2020-05-25 21:36:31 +0000
committergkoehler <gkoehler@openbsd.org>2020-05-25 21:36:31 +0000
commitfc80bb454272d95873f0fcb9cae4ef92ee9133f4 (patch)
treec09893dd38875eec045efa9ee535b627e6cce4b2 /gnu/llvm/tools/clang/lib/Driver
parentsync from MAKEDEV.md (diff)
downloadwireguard-openbsd-fc80bb454272d95873f0fcb9cae4ef92ee9133f4.tar.xz
wireguard-openbsd-fc80bb454272d95873f0fcb9cae4ef92ee9133f4.zip
PowerPC: optimize away the frame pointer.
clang defaulted to -fomit-frame-pointer when optimizing PowerPC code for Linux and NetBSD. Now do it for all systems, including OpenBSD. This affects both 32-bit and powerpc64 code. ok kettenis@
Diffstat (limited to 'gnu/llvm/tools/clang/lib/Driver')
-rw-r--r--gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
index f155c409f9a..fc9a145db0c 100644
--- a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
@@ -523,8 +523,12 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args,
// XCore never wants frame pointers, regardless of OS.
// WebAssembly never wants frame pointers.
return false;
+ case llvm::Triple::ppc:
+ case llvm::Triple::ppc64:
+ case llvm::Triple::ppc64le:
case llvm::Triple::riscv32:
case llvm::Triple::riscv64:
+ // PowerPC's frame pointer is often an extra copy of the stack pointer.
return !areOptimizationsEnabled(Args);
default:
break;
@@ -542,9 +546,6 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args,
case llvm::Triple::mips64el:
case llvm::Triple::mips:
case llvm::Triple::mipsel:
- case llvm::Triple::ppc:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
case llvm::Triple::systemz:
case llvm::Triple::x86:
case llvm::Triple::x86_64: