store i64 0, i64* %v
ret i64* %t
}
+
+; The noalias attribute is not necessarily safe in an interprocedural context even
+; in comparison to other noalias arguments in the same function.
+; CHECK: MayAlias: i8* %w, i8* %x
+
+define void @q0(i8* noalias %w, i8* noalias %x) {
+ store i8 0, i8* %w
+ store i8 0, i8* %x
+ call void @q0(i8* noalias %x, i8* noalias %w)
+ unreachable
+}
+
+; The noalias attribute is not necessarily safe in an interprocedural context.
+; CHECK: MayAlias: double* %y, double* @G
+
+@G = external global double
+define void @p0(double* noalias %y) {
+ store double 0.0, double* %y
+ store double 0.0, double* @G
+ unreachable
+}