• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -basic-aa -newgvn -S < %s | FileCheck %s
2
3define i32 @test1(i32* %p) {
4; CHECK-LABEL: @test1(i32* %p)
5; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE0:[0-9]+]]
6; CHECK: %c = add i32 %a, %a
7  %a = load i32, i32* %p, !range !0
8  %b = load i32, i32* %p, !range !0
9  %c = add i32 %a, %b
10  ret i32 %c
11}
12
13define i32 @test2(i32* %p) {
14; CHECK-LABEL: @test2(i32* %p)
15; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE0]]
16; CHECK: %c = add i32 %a, %a
17  %a = load i32, i32* %p, !range !0
18  %b = load i32, i32* %p
19  %c = add i32 %a, %b
20  ret i32 %c
21}
22
23define i32 @test3(i32* %p) {
24; CHECK-LABEL: @test3(i32* %p)
25; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE0]]
26; CHECK: %c = add i32 %a, %a
27  %a = load i32, i32* %p, !range !0
28  %b = load i32, i32* %p, !range !1
29  %c = add i32 %a, %b
30  ret i32 %c
31}
32
33define i32 @test4(i32* %p) {
34; CHECK-LABEL: @test4(i32* %p)
35; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE0]]
36; CHECK: %c = add i32 %a, %a
37  %a = load i32, i32* %p, !range !0
38  %b = load i32, i32* %p, !range !2
39  %c = add i32 %a, %b
40  ret i32 %c
41}
42
43define i32 @test5(i32* %p) {
44; CHECK-LABEL: @test5(i32* %p)
45; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE3:[0-9]+]]
46; CHECK: %c = add i32 %a, %a
47  %a = load i32, i32* %p, !range !3
48  %b = load i32, i32* %p, !range !4
49  %c = add i32 %a, %b
50  ret i32 %c
51}
52
53define i32 @test6(i32* %p) {
54; CHECK-LABEL: @test6(i32* %p)
55; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE5:[0-9]+]]
56; CHECK: %c = add i32 %a, %a
57  %a = load i32, i32* %p, !range !5
58  %b = load i32, i32* %p, !range !6
59  %c = add i32 %a, %b
60  ret i32 %c
61}
62
63define i32 @test7(i32* %p) {
64; CHECK-LABEL: @test7(i32* %p)
65; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE7:[0-9]+]]
66; CHECK: %c = add i32 %a, %a
67  %a = load i32, i32* %p, !range !7
68  %b = load i32, i32* %p, !range !8
69  %c = add i32 %a, %b
70  ret i32 %c
71}
72
73define i32 @test8(i32* %p) {
74; CHECK-LABEL: @test8(i32* %p)
75; CHECK: %a = load i32, i32* %p, align 4, !range ![[RANGE9:[0-9]+]]
76; CHECK-NOT: range
77; CHECK: %c = add i32 %a, %a
78  %a = load i32, i32* %p, !range !9
79  %b = load i32, i32* %p, !range !10
80  %c = add i32 %a, %b
81  ret i32 %c
82}
83
84; CHECK: ![[RANGE0]] = !{i32 0, i32 2}
85; CHECK: ![[RANGE3]] = !{i32 -5, i32 -2}
86; CHECK: ![[RANGE5]] = !{i32 10, i32 1}
87; CHECK: ![[RANGE7]] = !{i32 1, i32 2, i32 3, i32 4}
88; CHECK: ![[RANGE9]] = !{i32 1, i32 5}
89
90!0 = !{i32 0, i32 2}
91!1 = !{i32 3, i32 5}
92!2 = !{i32 2, i32 5}
93!3 = !{i32 -5, i32 -2}
94!4 = !{i32 1, i32 5}
95!5 = !{i32 10, i32 1}
96!6 = !{i32 12, i32 16}
97!7 = !{i32 1, i32 2, i32 3, i32 4}
98!8 = !{i32 5, i32 1}
99!9 = !{i32 1, i32 5}
100!10 = !{i32 5, i32 1}
101