[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