From: Joerg Sonnenberger Date: Tue, 17 Jul 2018 12:38:57 +0000 (+0000) Subject: For NetBSD, unwind data is emitted by default, so also enable frame X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=703ada1375c63916b557d509241769dd8b03f7b5;p=clang For NetBSD, unwind data is emitted by default, so also enable frame pointer optimisation by default when using optimisation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337274 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 853f9a422f..e7b15c7ad8 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -524,6 +524,10 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args, break; } + if (Triple.getOS() == llvm::Triple::NetBSD) { + return !areOptimizationsEnabled(Args); + } + if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI) { switch (Triple.getArch()) { // Don't use a frame pointer on linux if optimizing for certain targets. diff --git a/test/Driver/frame-pointer-elim.c b/test/Driver/frame-pointer-elim.c index e39499a55c..6fcd3eb75a 100644 --- a/test/Driver/frame-pointer-elim.c +++ b/test/Driver/frame-pointer-elim.c @@ -17,6 +17,15 @@ // RUN: FileCheck --check-prefix=CLOUDABI %s // CLOUDABI-NOT: "-momit-leaf-frame-pointer" +// NetBSD follows the same rules as Linux. +// RUN: %clang -### -target x86_64-unknown-netbsd -S -O1 %s 2>&1 | \ +// RUN: FileCheck --check-prefix=NETBSD-OPT %s +// NETBSD-OPT: "-momit-leaf-frame-pointer" + +// RUN: %clang -### -target x86_64-unknown-netbsd -S %s 2>&1 | \ +// RUN: FileCheck --check-prefix=NETBSD %s +// NETBSD-NOT: "-momit-leaf-frame-pointer" + // Darwin disables omitting the leaf frame pointer even under optimization // unless the command lines are given. // RUN: %clang -### -target i386-apple-darwin -S %s 2>&1 | \