brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 1b70acb Raw
66 lines · plain
1; RUN: opt < %s -aa-pipeline=basic-aa,globals-aa -S -passes='require<globals-aa>,function(loop-mssa(licm))' | FileCheck %s2 3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-apple-macosx10.10.0"5 6@b = common global i32 0, align 47@c = internal global i32 0, align 48@d = common global i32 0, align 49@e = common global ptr null, align 410 11define void @foo(ptr %P) noinline {12; CHECK: define void @foo13  %loadp = load i32, ptr %P, align 414  store i32 %loadp, ptr @d, align 415  ret void16}17 18define void @bar() noinline {19; CHECK: define void @bar20  %loadp = load i32, ptr @d, align 421  store i32 %loadp, ptr @c, align 422  ret void23}24 25define i32 @main() {26entry:27  %retval = alloca i32, align 428  %c = alloca [1 x i32], align 429  store i32 0, ptr %retval, align 430  call void @bar()31  store i32 0, ptr @b, align 432  br label %for.cond33  ;; Check that @c is LICM'ed out.34; CHECK: load i32, ptr @c35for.cond:                                         ; preds = %for.inc, %entry36; CHECK-LABEL: for.cond:37; CHECK: load i32, ptr @b38  %a1 = load i32, ptr @b, align 439  %aa2 = load i32, ptr @c, align 440  %add = add nsw i32 %a1, %aa241  %p1 = load ptr, ptr @e, align 442  call void @foo(ptr %p1)43  %cmp = icmp slt i32 %add, 344  br i1 %cmp, label %for.body, label %for.end45 46for.body:                                         ; preds = %for.cond47  %a2 = load i32, ptr @b, align 448  %idxprom = sext i32 %a2 to i6449  br label %for.inc50 51for.inc:                                          ; preds = %for.body52  %a3 = load i32, ptr @b, align 453  %inc = add nsw i32 %a3, 154  store i32 %inc, ptr @b, align 455  br label %for.cond56 57for.end:                                          ; preds = %for.cond58  ret i32 059}60 61; Function Attrs: nounwind argmemonly62declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind argmemonly63 64; Function Attrs: noreturn nounwind65declare void @abort() noreturn nounwind66