[llvm-commits] [llvm] r47907 - in /llvm/trunk: lib/Transforms/Utils/InlineFunction.cpp test/Transforms/Inline/2008-03-04-StructRet.ll

Devang Patel dpatel at apple.com
Tue Mar 4 13:45:28 PST 2008


Author: dpatel
Date: Tue Mar  4 15:45:28 2008
New Revision: 47907

URL: http://llvm.org/viewvc/llvm-project?rev=47907&view=rev
Log:
Use cast instead of dyn_cast.
Update test to use multiple return value directly, instead of relying on -sretpromotion.

Modified:
    llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
    llvm/trunk/test/Transforms/Inline/2008-03-04-StructRet.ll

Modified: llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp?rev=47907&r1=47906&r2=47907&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp Tue Mar  4 15:45:28 2008
@@ -448,8 +448,7 @@
         // Multiple return values.
         for (Value::use_iterator RUI = TheCall->use_begin(),
                RUE = TheCall->use_end(); RUI != RUE; ) {
-          GetResultInst *GR = dyn_cast<GetResultInst>(RUI++);
-          assert (GR && "Invalid Call instruction use!");
+          GetResultInst *GR = cast<GetResultInst>(RUI++);
           Value *RV = R->getOperand(GR->getIndex());
           GR->replaceAllUsesWith(RV);
           GR->eraseFromParent();

Modified: llvm/trunk/test/Transforms/Inline/2008-03-04-StructRet.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/2008-03-04-StructRet.ll?rev=47907&r1=47906&r2=47907&view=diff

==============================================================================
--- llvm/trunk/test/Transforms/Inline/2008-03-04-StructRet.ll (original)
+++ llvm/trunk/test/Transforms/Inline/2008-03-04-StructRet.ll Tue Mar  4 15:45:28 2008
@@ -1,26 +1,28 @@
-; RUN: llvm-as < %s | opt -inline -sretpromotion -disable-output
+; RUN: llvm-as < %s | opt -inline -disable-output
 	%struct.Benchmark = type { i32 (...)** }
 	%struct.Complex = type { double, double }
 	%struct.ComplexBenchmark = type { %struct.Benchmark }
 
-define void @_Zml7ComplexS_(%struct.Complex* sret  %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind  {
+define %struct.Complex @_Zml7ComplexS_1(double %a.0, double %a.1, double %b.0, double %b.1) nounwind  {
 entry:
-	ret void
+	%mrv = alloca %struct.Complex		; <%struct.Complex*> [#uses=2]
+	%mrv.gep = getelementptr %struct.Complex* %mrv, i32 0, i32 0		; <double*> [#uses=1]
+	%mrv.ld = load double* %mrv.gep		; <double> [#uses=1]
+	%mrv.gep1 = getelementptr %struct.Complex* %mrv, i32 0, i32 1		; <double*> [#uses=1]
+	%mrv.ld2 = load double* %mrv.gep1		; <double> [#uses=1]
+	ret double %mrv.ld, double %mrv.ld2
 }
 
 define void @_ZNK16ComplexBenchmark9oop_styleEv(%struct.ComplexBenchmark* %this) nounwind  {
 entry:
-	%tmp = alloca %struct.Complex		; <%struct.Complex*> [#uses=2]
+	%tmp = alloca %struct.Complex		; <%struct.Complex*> [#uses=0]
 	br label %bb31
-
 bb:		; preds = %bb31
-	call void @_Zml7ComplexS_( %struct.Complex* sret  %tmp, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00 ) nounwind 
-	%tmp21 = getelementptr %struct.Complex* %tmp, i32 0, i32 1		; <double*> [#uses=0]
+	call %struct.Complex @_Zml7ComplexS_1( double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00 ) nounwind 		; <%struct.Complex>:0 [#uses=1]
+	%gr = getresult %struct.Complex %0, 1		; <double> [#uses=0]
 	br label %bb31
-
 bb31:		; preds = %bb, %entry
 	br i1 false, label %bb, label %return
-
 return:		; preds = %bb31
 	ret void
 }





More information about the llvm-commits mailing list