[llvm-commits] [llvm] r75986 - in /llvm/trunk: lib/Target/SystemZ/SystemZISelLowering.cpp test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll

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


Author: asl
Date: Thu Jul 16 09:08:42 2009
New Revision: 75986

URL: http://llvm.org/viewvc/llvm-project?rev=75986&view=rev
Log:
Emit proper lowering of load from arg stack slot

Added:
    llvm/trunk/test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll
Modified:
    llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp

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

==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp Thu Jul 16 09:08:42 2009
@@ -186,20 +186,16 @@
     } else {
       // Sanity check
       assert(VA.isMemLoc());
-      // Load the argument to a virtual register
-      unsigned ObjSize = VA.getLocVT().getSizeInBits()/8;
-      if (ObjSize > 8) {
-        cerr << "LowerFORMAL_ARGUMENTS Unhandled argument type: "
-             << VA.getLocVT().getSimpleVT()
-             << "\n";
-      }
+
+      // Create the nodes corresponding to a load from this parameter slot.
       // Create the frame index object for this incoming parameter...
-      int FI = MFI->CreateFixedObject(ObjSize, VA.getLocMemOffset());
+      int FI = MFI->CreateFixedObject(VA.getValVT().getSizeInBits()/8,
+                                      VA.getLocMemOffset());
 
       // Create the SelectionDAG nodes corresponding to a load
       //from this parameter
-      SDValue FIN = DAG.getFrameIndex(FI, MVT::i64);
-      ArgValues.push_back(DAG.getLoad(VA.getLocVT(), dl, Root, FIN,
+      SDValue FIN = DAG.getFrameIndex(FI, getPointerTy());
+      ArgValues.push_back(DAG.getLoad(VA.getValVT(), dl, Root, FIN,
                                       PseudoSourceValue::getFixedStack(FI), 0));
     }
   }

Added: llvm/trunk/test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll?rev=75986&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll (added)
+++ llvm/trunk/test/CodeGen/SystemZ/2009-06-05-InvalidArgLoad.ll Thu Jul 16 09:08:42 2009
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc
+
+target datalayout = "E-p:64:64:64-i1:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128"
+target triple = "s390x-ibm-linux"
+	%struct.re_pattern_buffer = type <{ i8*, i64, i64, i64, i8*, i8*, i64, i8, i8, i8, i8, i8, i8, i8, i8 }>
+	%struct.re_registers = type <{ i32, i8, i8, i8, i8, i32*, i32* }>
+
+define i32 @xre_search_2(%struct.re_pattern_buffer* nocapture %bufp, i8* %string1, i32 %size1, i8* %string2, i32 %size2, i32 %startpos, i32 %range, %struct.re_registers* %regs, i32 %stop) nounwind {
+entry:
+	%cmp17.i = icmp slt i32 undef, %startpos		; <i1> [#uses=1]
+	%or.cond.i = or i1 undef, %cmp17.i		; <i1> [#uses=1]
+	br i1 %or.cond.i, label %byte_re_search_2.exit, label %if.then20.i
+
+if.then20.i:		; preds = %entry
+	ret i32 -2
+
+byte_re_search_2.exit:		; preds = %entry
+	ret i32 -1
+}





More information about the llvm-commits mailing list