From: Devang Patel Date: Tue, 4 Mar 2008 21:45:28 +0000 (+0000) Subject: Use cast instead of dyn_cast. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=37963556e331914fea9c5afb00de0e2a335fec6d;p=oota-llvm.git Use cast instead of dyn_cast. Update test to use multiple return value directly, instead of relying on -sretpromotion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47907 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index 6dda6d3313a..79b37003102 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/lib/Transforms/Utils/InlineFunction.cpp @@ -448,8 +448,7 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD) { // Multiple return values. for (Value::use_iterator RUI = TheCall->use_begin(), RUE = TheCall->use_end(); RUI != RUE; ) { - GetResultInst *GR = dyn_cast(RUI++); - assert (GR && "Invalid Call instruction use!"); + GetResultInst *GR = cast(RUI++); Value *RV = R->getOperand(GR->getIndex()); GR->replaceAllUsesWith(RV); GR->eraseFromParent(); diff --git a/test/Transforms/Inline/2008-03-04-StructRet.ll b/test/Transforms/Inline/2008-03-04-StructRet.ll index d919cf49fd3..fc7ebc4d809 100644 --- a/test/Transforms/Inline/2008-03-04-StructRet.ll +++ b/test/Transforms/Inline/2008-03-04-StructRet.ll @@ -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 ; [#uses=1] + %mrv.ld = load double* %mrv.gep ; [#uses=1] + %mrv.gep1 = getelementptr %struct.Complex* %mrv, i32 0, i32 1 ; [#uses=1] + %mrv.ld2 = load double* %mrv.gep1 ; [#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 ; [#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 ; [#uses=0] br label %bb31 - bb31: ; preds = %bb, %entry br i1 false, label %bb, label %return - return: ; preds = %bb31 ret void }