From: Mandeep Singh Grang Date: Thu, 12 Apr 2018 19:31:37 +0000 (+0000) Subject: [RISCV] Fix logic to check if frame pointer should be used X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27b69e2716929d8864715cbd128a64a50279609c;p=clang [RISCV] Fix logic to check if frame pointer should be used Summary: The logic was broken for Linux triples as it returns true in the switch for Triple.isOSLinux(). Reviewers: asb, apazos Reviewed By: asb Subscribers: kito-cheng, shiva0217, cfe-commits Differential Revision: https://reviews.llvm.org/D45237 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329941 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 7d2d3c45c8..19a4bd05c4 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -529,6 +529,9 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args, // XCore never wants frame pointers, regardless of OS. // WebAssembly never wants frame pointers. return false; + case llvm::Triple::riscv32: + case llvm::Triple::riscv64: + return !areOptimizationsEnabled(Args); default: break; } @@ -552,14 +555,6 @@ static bool useFramePointerForTargetByDefault(const ArgList &Args, } } - switch (Triple.getArch()) { - case llvm::Triple::riscv32: - case llvm::Triple::riscv64: - return !areOptimizationsEnabled(Args); - default: - break; - } - if (Triple.isOSWindows()) { switch (Triple.getArch()) { case llvm::Triple::x86: diff --git a/test/Driver/frame-pointer.c b/test/Driver/frame-pointer.c index cf5c07d542..85c9f3a21f 100644 --- a/test/Driver/frame-pointer.c +++ b/test/Driver/frame-pointer.c @@ -45,6 +45,18 @@ // RUN: %clang -target riscv64-unknown-elf -### -S -O3 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK3-64 %s // RUN: %clang -target riscv64-unknown-elf -### -S -Os %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECKs-64 %s +// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O0 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK0-32 %s +// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O1 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK1-32 %s +// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O2 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK2-32 %s +// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -O3 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK3-32 %s +// RUN: %clang -target riscv32-unknown-linux-gnu -### -S -Os %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECKs-32 %s + +// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O0 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK0-64 %s +// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O1 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK1-64 %s +// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O2 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK2-64 %s +// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -O3 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK3-64 %s +// RUN: %clang -target riscv64-unknown-linux-gnu -### -S -Os %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECKs-64 %s + // CHECK0-32: -mdisable-fp-elim // CHECK1-32-NOT: -mdisable-fp-elim // CHECK2-32-NOT: -mdisable-fp-elim