brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 173744a Raw
182 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -disable-output "-passes=print<da>"                            \3; RUN: "-aa-pipeline=basic-aa,tbaa" 2>&1 | FileCheck %s4 5define void @test_no_noalias(ptr %A, ptr %B) {6; CHECK-LABEL: 'test_no_noalias'7; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 48; CHECK-NEXT:    da analyze - none!9; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 410; CHECK-NEXT:    da analyze - confused!11; CHECK-NEXT:  Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 412; CHECK-NEXT:    da analyze - none!13;14  store i32 1, ptr %A15  store i32 2, ptr %B16  ret void17}18 19define void @test_one_noalias(ptr noalias %A, ptr %B) {20; CHECK-LABEL: 'test_one_noalias'21; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 422; CHECK-NEXT:    da analyze - none!23; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 424; CHECK-NEXT:    da analyze - none!25; CHECK-NEXT:  Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 426; CHECK-NEXT:    da analyze - none!27;28  store i32 1, ptr %A29  store i32 2, ptr %B30  ret void31}32 33define void @test_two_noalias(ptr noalias %A, ptr noalias %B) {34; CHECK-LABEL: 'test_two_noalias'35; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 436; CHECK-NEXT:    da analyze - none!37; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr %B, align 438; CHECK-NEXT:    da analyze - none!39; CHECK-NEXT:  Src: store i32 2, ptr %B, align 4 --> Dst: store i32 2, ptr %B, align 440; CHECK-NEXT:    da analyze - none!41;42  store i32 1, ptr %A43  store i32 2, ptr %B44  ret void45}46 47@g = global i32 548define void @test_global_alias(ptr %A) {49; CHECK-LABEL: 'test_global_alias'50; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 451; CHECK-NEXT:    da analyze - none!52; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr @g, align 453; CHECK-NEXT:    da analyze - confused!54; CHECK-NEXT:  Src: store i32 2, ptr @g, align 4 --> Dst: store i32 2, ptr @g, align 455; CHECK-NEXT:    da analyze - none!56;57  store i32 1, ptr %A58  store i32 2, ptr @g59  ret void60}61 62define void @test_global_noalias(ptr noalias %A) {63; CHECK-LABEL: 'test_global_noalias'64; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 1, ptr %A, align 465; CHECK-NEXT:    da analyze - none!66; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4 --> Dst: store i32 2, ptr @g, align 467; CHECK-NEXT:    da analyze - none!68; CHECK-NEXT:  Src: store i32 2, ptr @g, align 4 --> Dst: store i32 2, ptr @g, align 469; CHECK-NEXT:    da analyze - none!70;71  store i32 1, ptr %A72  store i32 2, ptr @g73  ret void74}75 76 77@a = global i16 5, align 278@b = global ptr @a, align 479define void @test_global_size() {80; CHECK-LABEL: 'test_global_size'81; CHECK-NEXT:  Src: %l0 = load ptr, ptr @b, align 4 --> Dst: %l0 = load ptr, ptr @b, align 482; CHECK-NEXT:    da analyze - none!83; CHECK-NEXT:  Src: %l0 = load ptr, ptr @b, align 4 --> Dst: %l1 = load i16, ptr %l0, align 284; CHECK-NEXT:    da analyze - confused!85; CHECK-NEXT:  Src: %l0 = load ptr, ptr @b, align 4 --> Dst: store i16 1, ptr @a, align 286; CHECK-NEXT:    da analyze - none!87; CHECK-NEXT:  Src: %l1 = load i16, ptr %l0, align 2 --> Dst: %l1 = load i16, ptr %l0, align 288; CHECK-NEXT:    da analyze - none!89; CHECK-NEXT:  Src: %l1 = load i16, ptr %l0, align 2 --> Dst: store i16 1, ptr @a, align 290; CHECK-NEXT:    da analyze - confused!91; CHECK-NEXT:  Src: store i16 1, ptr @a, align 2 --> Dst: store i16 1, ptr @a, align 292; CHECK-NEXT:    da analyze - none!93;94  %l0 = load ptr, ptr @b, align 495  %l1 = load i16, ptr %l0, align 296  store i16 1, ptr @a, align 297  ret void98}99 100define void @test_tbaa_same(ptr %A, ptr %B) {101; CHECK-LABEL: 'test_tbaa_same'102; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 1, ptr %A, align 4, !tbaa !0103; CHECK-NEXT:    da analyze - none!104; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 2, ptr %B, align 4, !tbaa !0105; CHECK-NEXT:    da analyze - confused!106; CHECK-NEXT:  Src: store i32 2, ptr %B, align 4, !tbaa !0 --> Dst: store i32 2, ptr %B, align 4, !tbaa !0107; CHECK-NEXT:    da analyze - none!108;109  store i32 1, ptr %A, !tbaa !5110  store i32 2, ptr %B, !tbaa !5111  ret void112}113 114define void @test_tbaa_diff(ptr %A, ptr %B) {115; CHECK-LABEL: 'test_tbaa_diff'116; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i32 1, ptr %A, align 4, !tbaa !0117; CHECK-NEXT:    da analyze - none!118; CHECK-NEXT:  Src: store i32 1, ptr %A, align 4, !tbaa !0 --> Dst: store i16 2, ptr %B, align 2, !tbaa !4119; CHECK-NEXT:    da analyze - none!120; CHECK-NEXT:  Src: store i16 2, ptr %B, align 2, !tbaa !4 --> Dst: store i16 2, ptr %B, align 2, !tbaa !4121; CHECK-NEXT:    da analyze - none!122;123  store i32 1, ptr %A, !tbaa !5124  store i16 2, ptr %B, !tbaa !9125  ret void126}127 128define void @tbaa_loop(i32 %I, i32 %J, ptr nocapture %A, ptr nocapture readonly %B) {129; CHECK-LABEL: 'tbaa_loop'130; CHECK-NEXT:  Src: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0 --> Dst: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0131; CHECK-NEXT:    da analyze - input [* *]!132; CHECK-NEXT:  Src: %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !0 --> Dst: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4133; CHECK-NEXT:    da analyze - none!134; CHECK-NEXT:  Src: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4 --> Dst: store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !4135; CHECK-NEXT:    da analyze - output [*]!136;137entry:138  %cmp = icmp ne i32 %J, 0139  %cmp122 = icmp ne i32 %I, 0140  %or.cond = and i1 %cmp, %cmp122141  br i1 %or.cond, label %for.outer.preheader, label %for.end142 143for.outer.preheader:144  br label %for.outer145 146for.outer:147  %i.us = phi i32 [ %add8.us, %for.latch ], [ 0, %for.outer.preheader ]148  br label %for.inner149 150for.inner:151  %j.us = phi i32 [ 0, %for.outer ], [ %inc.us, %for.inner ]152  %sum1.us = phi i32 [ 0, %for.outer ], [ %add.us, %for.inner ]153  %arrayidx.us = getelementptr inbounds i16, ptr %B, i32 %j.us154  %0 = load i16, ptr %arrayidx.us, align 4, !tbaa !9155  %sext = sext i16 %0 to i32156  %add.us = add i32 %sext, %sum1.us157  %inc.us = add nuw i32 %j.us, 1158  %exitcond = icmp eq i32 %inc.us, %J159  br i1 %exitcond, label %for.latch, label %for.inner160 161for.latch:162  %add.us.lcssa = phi i32 [ %add.us, %for.inner ]163  %arrayidx6.us = getelementptr inbounds i32, ptr %A, i32 %i.us164  store i32 %add.us.lcssa, ptr %arrayidx6.us, align 4, !tbaa !5165  %add8.us = add nuw i32 %i.us, 1166  %exitcond25 = icmp eq i32 %add8.us, %I167  br i1 %exitcond25, label %for.end.loopexit, label %for.outer168 169for.end.loopexit:170  br label %for.end171 172for.end:173  ret void174}175 176!5 = !{!6, !6, i64 0}177!6 = !{!"int", !7, i64 0}178!7 = !{!"omnipotent char", !8, i64 0}179!8 = !{!"Simple C/C++ TBAA"}180!9 = !{!10, !10, i64 0}181!10 = !{!"short", !7, i64 0}182