]> granicus.if.org Git - clang/commitdiff
For NetBSD, unwind data is emitted by default, so also enable frame
authorJoerg Sonnenberger <joerg@bec.de>
Tue, 17 Jul 2018 12:38:57 +0000 (12:38 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Tue, 17 Jul 2018 12:38:57 +0000 (12:38 +0000)
pointer optimisation by default when using optimisation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@337274 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains/Clang.cpp
test/Driver/frame-pointer-elim.c

index 853f9a422f19b4f28c8d6470b31aadb4649a562b..e7b15c7ad820d9b11877a53f31e1de99a4317624 100644 (file)
@@ -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.
index e39499a55c241f575d9fb495145dfdf4416abc4e..6fcd3eb75ae591ad66bcfccf130a875e2fa48000 100644 (file)
 // 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 | \