From 0ed8d8209584daa5ff30aae51b5396d05d7aa997 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Mon, 11 Jul 2022 20:09:51 +0000 Subject: [PATCH] [Driver] Don't use frame pointer on Fuchsia when optimizations are enabled This matches the standard behavior on other platforms. Differential Revision: https://reviews.llvm.org/D129512 --- clang/lib/Driver/ToolChains/Clang.cpp | 2 +- clang/test/Driver/fuchsia.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index ee44577..aae416f 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -567,7 +567,7 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args, break; } - if (Triple.isOSNetBSD()) { + if (Triple.isOSFuchsia() || Triple.isOSNetBSD()) { return !areOptimizationsEnabled(Args); } diff --git a/clang/test/Driver/fuchsia.c b/clang/test/Driver/fuchsia.c index 99c43f4..4a76db3 100644 --- a/clang/test/Driver/fuchsia.c +++ b/clang/test/Driver/fuchsia.c @@ -55,6 +55,18 @@ // CHECK-NOT: crtend.o // CHECK-NOT: crtn.o +// RUN: %clang -### %s --target=x86_64-unknown-fuchsia 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-FP-ALL +// RUN: %clang -### %s --target=aarch64-unknown-fuchsia 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-FP-NONLEAF +// RUN: %clang -### %s --target=x86_64-unknown-fuchsia -O3 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-FP-NONE +// RUN: %clang -### %s --target=aarch64-unknown-fuchsia -O3 2>&1 \ +// RUN: | FileCheck %s -check-prefix=CHECK-FP-NONE +// CHECK-FP-ALL: "-mframe-pointer=all" +// CHECK-FP-NONLEAF: "-mframe-pointer=non-leaf" +// CHECK-FP-NONE: "-mframe-pointer=none" + // RUN: %clang -### %s --target=x86_64-unknown-fuchsia -rtlib=libgcc -fuse-ld=lld 2>&1 \ // RUN: | FileCheck %s -check-prefix=CHECK-RTLIB // CHECK-RTLIB: error: invalid runtime library name in argument '-rtlib=libgcc' -- 2.7.4