1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
; RUN: opt -mtriple=x86_64-apple-macosx10.7 -aa-pipeline=basic-aa -passes=inferattrs,aa-eval -print-all-alias-modref-info -disable-output 2>&1 %s | FileCheck %s
declare void @memset_pattern4(ptr, ptr, i64)
declare void @memset_pattern8(ptr, ptr, i64)
declare void @memset_pattern16(ptr, ptr, i64)
define void @test_memset_pattern4_const_size(ptr noalias %a, ptr noalias %pattern) {
; CHECK-LABEL: Function: test_memset_pattern4_const_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.17 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern.gep.3 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %pattern.gep.4 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern4(ptr %a, ptr %pattern, i64 17)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
%pattern.gep.3 = getelementptr i8, ptr %pattern, i32 3
store i8 1, ptr %pattern.gep.3
%pattern.gep.4 = getelementptr i8, ptr %pattern, i32 4
store i8 1, ptr %pattern.gep.4
ret void
}
define void @test_memset_pattern4_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {
; CHECK-LABEL: Function: test_memset_pattern4_variable_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.17 <-> call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern4(ptr %a, ptr %pattern, i64 %n)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
ret void
}
define void @test_memset_pattern8_const_size(ptr noalias %a, ptr noalias %pattern) {
; CHECK-LABEL: Function: test_memset_pattern8_const_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.17 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern.gep.7 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %pattern.gep.8 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern8(ptr %a, ptr %pattern, i64 17)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
%pattern.gep.7 = getelementptr i8, ptr %pattern, i32 7
store i8 1, ptr %pattern.gep.7
%pattern.gep.8 = getelementptr i8, ptr %pattern, i32 8
store i8 1, ptr %pattern.gep.8
ret void
}
define void @test_memset_pattern8_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {
; CHECK-LABEL: Function: test_memset_pattern8_variable_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.17 <-> call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern8(ptr %a, ptr %pattern, i64 %n)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
ret void
}
define void @test_memset_pattern16_const_size(ptr noalias %a, ptr noalias %pattern) {
; CHECK-LABEL: Function: test_memset_pattern16_const_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %a.gep.17 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern.gep.15 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
; CHECK-NEXT: NoModRef: Ptr: i8* %pattern.gep.16 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern16(ptr %a, ptr %pattern, i64 17)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
%pattern.gep.15 = getelementptr i8, ptr %pattern, i32 15
store i8 1, ptr %pattern.gep.15
%pattern.gep.16 = getelementptr i8, ptr %pattern, i32 16
store i8 1, ptr %pattern.gep.16
ret void
}
define void @test_memset_pattern16_variable_size(ptr noalias %a, ptr noalias %pattern, i64 %n) {
; CHECK-LABEL: Function: test_memset_pattern16_variable_size
; CHECK: Just Mod: Ptr: i8* %a <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Ref: Ptr: i8* %pattern <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.1 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)
; CHECK-NEXT: Just Mod: Ptr: i8* %a.gep.17 <-> call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)
;
entry:
load i8, ptr %a
load i8, ptr %pattern
call void @memset_pattern16(ptr %a, ptr %pattern, i64 %n)
%a.gep.1 = getelementptr i8, ptr %a, i32 1
store i8 0, ptr %a.gep.1
%a.gep.17 = getelementptr i8, ptr %a, i32 17
store i8 1, ptr %a.gep.17
ret void
}
|