1*a11faeedSBjorn Pettersson; RUN: opt -S -passes=licm %s | FileCheck %s 2145cdad1SAlina Sbirlea@v_1 = global i8 0, align 1 3145cdad1SAlina Sbirlea@v_2 = global i8 0, align 1 4145cdad1SAlina Sbirlea 5145cdad1SAlina Sbirlea; CHECK-LABEL: @foo() 6145cdad1SAlina Sbirlea; CHECK: for.cond: 7145cdad1SAlina Sbirlea; CHECK-NOT: store 8145cdad1SAlina Sbirlea; CHECK: for.body: 98e44f13cSNikita Popov; CHECK: call void @llvm.memcpy.p0.p0.i64 10145cdad1SAlina Sbirlea; CHECK: store 11145cdad1SAlina Sbirleadefine void @foo() { 12145cdad1SAlina Sbirleaentry: 13145cdad1SAlina Sbirlea br label %for.cond 14145cdad1SAlina Sbirlea 15145cdad1SAlina Sbirleafor.cond: ; preds = %for.body, %entry 16145cdad1SAlina Sbirlea %0 = phi i16 [ %inc, %for.body ], [ 0, %entry ] 17145cdad1SAlina Sbirlea %cmp = icmp slt i16 %0, 1 18145cdad1SAlina Sbirlea br i1 %cmp, label %for.body, label %for.end 19145cdad1SAlina Sbirlea 20145cdad1SAlina Sbirleafor.body: ; preds = %for.cond 218e44f13cSNikita Popov call void @llvm.memcpy.p0.p0.i64(ptr @v_1, ptr @v_2, i64 1, i1 false) 228e44f13cSNikita Popov store i8 1, ptr @v_2, align 1 23145cdad1SAlina Sbirlea %inc = add nsw i16 %0, 1 24145cdad1SAlina Sbirlea br label %for.cond 25145cdad1SAlina Sbirlea 26145cdad1SAlina Sbirleafor.end: ; preds = %for.cond 27145cdad1SAlina Sbirlea ret void 28145cdad1SAlina Sbirlea} 29145cdad1SAlina Sbirlea 30145cdad1SAlina Sbirlea; Function Attrs: argmemonly nounwind willreturn 318e44f13cSNikita Popovdeclare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 32145cdad1SAlina Sbirlea 33145cdad1SAlina Sbirleaattributes #2 = { argmemonly nounwind willreturn } 34145cdad1SAlina Sbirlea 35