summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormortimer <mortimer@openbsd.org>2019-05-31 19:17:39 +0000
committermortimer <mortimer@openbsd.org>2019-05-31 19:17:39 +0000
commitd39340439da6e6fb94fdd0e18d45fc6ce403ecbb (patch)
tree31d83de3e56b5679904719161f0f74b516212e82
parentRe-enable RETGUARD leaf function optimization for arm64. (diff)
downloadwireguard-openbsd-d39340439da6e6fb94fdd0e18d45fc6ce403ecbb.tar.xz
wireguard-openbsd-d39340439da6e6fb94fdd0e18d45fc6ce403ecbb.zip
Re-enable frame pointer elimination for x86 and mips64 if optimizations are
enabled. ok visa@
-rw-r--r--gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
index 8f69d78d79c..06e98b7c403 100644
--- a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
@@ -528,6 +528,18 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args,
return !areOptimizationsEnabled(Args);
}
+ if (Triple.getOS() == llvm::Triple::OpenBSD) {
+ switch (Triple.getArch()) {
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el:
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64:
+ return !areOptimizationsEnabled(Args);
+ default:
+ return true;
+ }
+ }
+
if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI) {
switch (Triple.getArch()) {
// Don't use a frame pointer on linux if optimizing for certain targets.