[llvm] r350710 - [MSP430] Fix crash while lowering llvm.stacksave/stackrestore

Anton Korobeynikov via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 9 04:52:15 PST 2019


Author: asl
Date: Wed Jan  9 04:52:15 2019
New Revision: 350710

URL: http://llvm.org/viewvc/llvm-project?rev=350710&view=rev
Log:
[MSP430] Fix crash while lowering llvm.stacksave/stackrestore

Perform the usual expansion of stacksave / restore intrinsics.
Patch by Kristina Bessonova!

Differential Revision: https://reviews.llvm.org/D54890

Added:
    llvm/trunk/test/CodeGen/MSP430/stacksave_restore.ll
Modified:
    llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp

Modified: llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp?rev=350710&r1=350709&r2=350710&view=diff
==============================================================================
--- llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp Wed Jan  9 04:52:15 2019
@@ -95,6 +95,8 @@ MSP430TargetLowering::MSP430TargetLoweri
   setOperationAction(ISD::SIGN_EXTEND,      MVT::i16,   Custom);
   setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i8, Expand);
   setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i16, Expand);
+  setOperationAction(ISD::STACKSAVE,        MVT::Other, Expand);
+  setOperationAction(ISD::STACKRESTORE,     MVT::Other, Expand);
 
   setOperationAction(ISD::CTTZ,             MVT::i8,    Expand);
   setOperationAction(ISD::CTTZ,             MVT::i16,   Expand);

Added: llvm/trunk/test/CodeGen/MSP430/stacksave_restore.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/stacksave_restore.ll?rev=350710&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/stacksave_restore.ll (added)
+++ llvm/trunk/test/CodeGen/MSP430/stacksave_restore.ll Wed Jan  9 04:52:15 2019
@@ -0,0 +1,13 @@
+; RUN: llc < %s -march=msp430
+
+target triple = "msp430"
+
+define void @foo() {
+entry:
+  %0 = tail call i8* @llvm.stacksave()
+  tail call void @llvm.stackrestore(i8* %0)
+  ret void
+}
+
+declare i8* @llvm.stacksave()
+declare void @llvm.stackrestore(i8*)




More information about the llvm-commits mailing list