LICM does get dead instructions input to it. Instead of sinking them
[oota-llvm.git] / test / Transforms / LICM / 2008-07-22-LoadGlobalConstant.ll
index c3af29bf436f797bab4a835b5e484e592f51d573..10b00bab8fd9aa896bedc3b4f7ae6e14e412a9c0 100644 (file)
@@ -1,15 +1,23 @@
-; RUN: llvm-as < %s | opt -licm | llvm-dis | grep -A 1 entry | grep load.*@a
+; RUN: opt < %s -licm -S | FileCheck %s
+
 @a = external constant float*
 
 define void @test(i32 %count) {
 entry:
         br label %forcond
 
+; CHECK:  %tmp3 = load float** @a
+; CHECK:  br label %forcond
+
 forcond:
         %i.0 = phi i32 [ 0, %entry ], [ %inc, %forbody ]
         %cmp = icmp ult i32 %i.0, %count
         br i1 %cmp, label %forbody, label %afterfor
 
+; CHECK:  %i.0 = phi i32 [ 0, %entry ], [ %inc, %forbody ]
+; CHECK:  %cmp = icmp ult i32 %i.0, %count
+; CHECK:  br i1 %cmp, label %forbody, label %afterfor
+
 forbody:
         %tmp3 = load float** @a
         %arrayidx = getelementptr float* %tmp3, i32 %i.0
@@ -18,6 +26,14 @@ forbody:
         %inc = add i32 %i.0, 1
         br label %forcond
 
+; CHECK:  %arrayidx = getelementptr float* %tmp3, i32 %i.0
+; CHECK:  %tmp7 = uitofp i32 %i.0 to float
+; CHECK:  store float %tmp7, float* %arrayidx
+; CHECK:  %inc = add i32 %i.0, 1
+; CHECK:  br label %forcond
+
 afterfor:
         ret void
 }
+
+; CHECK:  ret void