@@ -110,4 +110,31 @@ define void @add_non_zero_with_offset(i32* %p, i32 %addend, i32* %q) {
110
110
ret void
111
111
}
112
112
113
+ ; CHECK-LABEL: non_zero_index_simple
114
+ ; CHECK: MayAlias: i32* %gep, i32* %p
115
+ ; CHECK: MayAlias: i16* %gep.16, i32* %p
116
+ ; CHECK: MayAlias: i32* %p, i64* %gep.64
117
+ ; TODO: First two could be NoAlias.
118
+ define void @non_zero_index_simple (i32* %p , i32* %q ) {
119
+ %knownnonzero = load i32 , i32* %q , !range !0
120
+ %gep = getelementptr i32 , i32* %p , i32 %knownnonzero
121
+ %gep.16 = bitcast i32* %gep to i16*
122
+ %gep.64 = bitcast i32* %gep to i64*
123
+ ret void
124
+ }
125
+
126
+ ; CHECK-LABEL: non_zero_index_with_offset
127
+ ; CHECK: MayAlias: i32* %gep, i32* %p
128
+ ; CHECK: MayAlias: i16* %gep.16, i32* %p
129
+ ; TODO: Last could be NoAlias.
130
+ define void @non_zero_index_with_offset (i32* %p , i32* %q ) {
131
+ %knownnonzero = load i32 , i32* %q , !range !0
132
+ %p.8 = bitcast i32* %p to i8*
133
+ %p.off.8 = getelementptr i8 , i8* %p.8 , i32 2
134
+ %p.off = bitcast i8* %p.off.8 to i32*
135
+ %gep = getelementptr i32 , i32* %p.off , i32 %knownnonzero
136
+ %gep.16 = bitcast i32* %gep to i16*
137
+ ret void
138
+ }
139
+
113
140
!0 = !{ i32 1 , i32 5 }
0 commit comments