28 lines · plain
1; RUN: opt -S < %s -passes=licm | FileCheck %s2 3declare void @llvm.sideeffect()4 5; LICM across a @llvm.sideeffect.6 7; CHECK-LABEL: licm8; CHECK: load9; CHECK: loop:10; CHECK-NOT: load11define float @licm(i64 %n, ptr nocapture readonly %p) #0 {12bb0:13 br label %loop14 15loop:16 %i = phi i64 [ 0, %bb0 ], [ %t5, %loop ]17 %sum = phi float [ 0.000000e+00, %bb0 ], [ %t4, %loop ]18 call void @llvm.sideeffect()19 %t3 = load float, ptr %p20 %t4 = fadd float %sum, %t321 %t5 = add i64 %i, 122 %t6 = icmp ult i64 %t5, %n23 br i1 %t6, label %loop, label %bb224 25bb2:26 ret float %t427}28