brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 3938a33 Raw
62 lines · plain
1; Test that GCSE uses basicaa to do alias analysis, which is capable of2; disambiguating some obvious cases.  All loads should be removable in3; this testcase.4 5; RUN: opt < %s -aa-pipeline=basic-aa -passes=gvn,instcombine,dce -S | FileCheck %s6 7@A = global i32 78@B = global i32 89 10; CHECK:      define i32 @test()11; CHECK-NEXT:   store i32 123, ptr @B12; CHECK-NEXT:   ret i32 013 14define i32 @test() {15	%A1 = load i32, ptr @A16 17	store i32 123, ptr @B  ; Store cannot alias @A18 19	%A2 = load i32, ptr @A20	%X = sub i32 %A1, %A221	ret i32 %X22}23 24; CHECK:      define i32 @test2()25; CHECK-NEXT:   br label %Loop26; CHECK:      Loop:27; CHECK-NEXT:   store i32 0, ptr @B28; CHECK-NEXT:   br i1 true, label %out, label %Loop29; CHECK:      out:30; CHECK-NEXT:   ret i32 031 32define i32 @test2() {33        %A1 = load i32, ptr @A34        br label %Loop35Loop:36        %AP = phi i32 [0, %0], [%X, %Loop]37        store i32 %AP, ptr @B  ; Store cannot alias @A38 39        %A2 = load i32, ptr @A40        %X = sub i32 %A1, %A241        %c = icmp eq i32 %X, 042        br i1 %c, label %out, label %Loop43 44out:45        ret i32 %X46}47 48declare void @external()49 50; CHECK:      define i32 @test3()51; CHECK-NEXT:   call void @external()52; CHECK-NEXT:   ret i32 753 54define i32 @test3() {55	%X = alloca i3256	store i32 7, ptr %X57	call void @external()58	%V = load i32, ptr %X59	ret i32 %V60}61 62