r353212 - Do not use frame pointer by default for MSP430
Anton Korobeynikov via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 5 12:15:04 PST 2019
Author: asl
Date: Tue Feb 5 12:15:03 2019
New Revision: 353212
URL: http://llvm.org/viewvc/llvm-project?rev=353212&view=rev
Log:
Do not use frame pointer by default for MSP430
This is suggested by 3.3.9 of MSP430 EABI document.
We do allow user to manually enable frame pointer. GCC toolchain uses the same behavior.
Patch by Dmitry Mikushev!
Differential Revision: https://reviews.llvm.org/D56925
Added:
cfe/trunk/test/CodeGen/msp430-fp-elim.c
Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=353212&r1=353211&r2=353212&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Tue Feb 5 12:15:03 2019
@@ -519,6 +519,7 @@ static bool useFramePointerForTargetByDe
case llvm::Triple::xcore:
case llvm::Triple::wasm32:
case llvm::Triple::wasm64:
+ case llvm::Triple::msp430:
// XCore never wants frame pointers, regardless of OS.
// WebAssembly never wants frame pointers.
return false;
Added: cfe/trunk/test/CodeGen/msp430-fp-elim.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/msp430-fp-elim.c?rev=353212&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/msp430-fp-elim.c (added)
+++ cfe/trunk/test/CodeGen/msp430-fp-elim.c Tue Feb 5 12:15:03 2019
@@ -0,0 +1,19 @@
+// REQUIRES: msp430-registered-target
+// RUN: %clang_cc1 -mdisable-fp-elim -triple msp430 -S %s -o - | FileCheck %s --check-prefix=FP_ENFORCED
+// RUN: %clang_cc1 -triple msp430 -S %s -o - | FileCheck %s --check-prefix=FP_DEFAULT
+
+// Check the frame pointer is not used on MSP430 by default, but can be forcibly turned on.
+
+// FP_ENFORCED: push r4
+// FP_ENFORCED: mov r4, r4
+// FP_ENFORCED: pop r4
+// FP_DEFAULT: .globl fp_elim_check
+// FP_DEFAULT-NOT: push r4
+// FP_DEFAULT: mov r4, r4
+// FP_DEFAULT-NOT: pop r4
+
+void fp_elim_check()
+{
+ asm volatile ("mov r4, r4");
+}
+
More information about the cfe-commits
mailing list