[llvm-commits] [llvm] r75985 - in /llvm/trunk: lib/Target/SystemZ/SystemZISelLowering.cpp lib/Target/SystemZ/SystemZRegisterInfo.cpp test/CodeGen/SystemZ/09-DynamicAlloca.ll

Anton Korobeynikov asl at math.spbu.ru
Thu Jul 16 07:08:21 PDT 2009


Author: asl
Date: Thu Jul 16 09:08:15 2009
New Revision: 75985

URL: http://llvm.org/viewvc/llvm-project?rev=75985&view=rev
Log:
Implement dynamic allocas

Added:
    llvm/trunk/test/CodeGen/SystemZ/09-DynamicAlloca.ll
Modified:
    llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
    llvm/trunk/lib/Target/SystemZ/SystemZRegisterInfo.cpp

Modified: llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp?rev=75985&r1=75984&r2=75985&view=diff

==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp Thu Jul 16 09:08:15 2009
@@ -68,6 +68,7 @@
   setOperationAction(ISD::BR_CC,            MVT::i64, Custom);
   setOperationAction(ISD::GlobalAddress,    MVT::i64, Custom);
   setOperationAction(ISD::JumpTable,        MVT::i64, Custom);
+  setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i64, Expand);
 
   // FIXME: Can we lower these 2 efficiently?
   setOperationAction(ISD::SETCC,            MVT::i32, Expand);

Modified: llvm/trunk/lib/Target/SystemZ/SystemZRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZRegisterInfo.cpp?rev=75985&r1=75984&r2=75985&view=diff

==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZRegisterInfo.cpp Thu Jul 16 09:08:15 2009
@@ -85,7 +85,13 @@
 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
                               MachineBasicBlock::iterator I) const {
   if (!hasReservedCallFrame(MF)) {
-    assert(0 && "Not implemented yet!");
+    // If the stack pointer can be changed after prologue, turn the
+    // adjcallstackup instruction into a 'sub R15, <amt>' and the
+    // adjcallstackdown instruction into 'add R15, <amt>'
+    MachineInstr *Old = I;
+    uint64_t Amount = Old->getOperand(0).getImm();
+
+    assert((Amount == 0) && "Not implemented yet!");
   }
 
   MBB.erase(I);

Added: llvm/trunk/test/CodeGen/SystemZ/09-DynamicAlloca.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/SystemZ/09-DynamicAlloca.ll?rev=75985&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/SystemZ/09-DynamicAlloca.ll (added)
+++ llvm/trunk/test/CodeGen/SystemZ/09-DynamicAlloca.ll Thu Jul 16 09:08:15 2009
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+
+target datalayout = "E-p:64:64:64-i8:8:16-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-a0:16:16"
+target triple = "s390x-linux"
+
+define void @foo(i64 %N) nounwind {
+entry:
+	%N3 = trunc i64 %N to i32		; <i32> [#uses=1]
+	%vla = alloca i8, i32 %N3, align 2		; <i8*> [#uses=1]
+	call void @bar(i8* %vla) nounwind
+	ret void
+}
+
+declare void @bar(i8*)





More information about the llvm-commits mailing list