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