@@ -16,33 +16,6 @@ import SIL
16
16
struct AliasAnalysis {
17
17
let bridged : BridgedAliasAnalysis
18
18
19
- func mayRead( _ inst: Instruction , fromAddress: Value ) -> Bool {
20
- switch bridged. getMemBehavior ( inst. bridged, fromAddress. bridged) {
21
- case . MayRead, . MayReadWrite, . MayHaveSideEffects:
22
- return true
23
- default :
24
- return false
25
- }
26
- }
27
-
28
- func mayWrite( _ inst: Instruction , toAddress: Value ) -> Bool {
29
- switch bridged. getMemBehavior ( inst. bridged, toAddress. bridged) {
30
- case . MayWrite, . MayReadWrite, . MayHaveSideEffects:
31
- return true
32
- default :
33
- return false
34
- }
35
- }
36
-
37
- func mayReadOrWrite( _ inst: Instruction , address: Value ) -> Bool {
38
- switch bridged. getMemBehavior ( inst. bridged, address. bridged) {
39
- case . MayRead, . MayWrite, . MayReadWrite, . MayHaveSideEffects:
40
- return true
41
- default :
42
- return false
43
- }
44
- }
45
-
46
19
/// Returns the correct path for address-alias functions.
47
20
static func getPtrOrAddressPath( for value: Value ) -> SmallProjectionPath {
48
21
let ty = value. type
@@ -119,6 +92,35 @@ struct AliasAnalysis {
119
92
}
120
93
}
121
94
95
+ extension Instruction {
96
+ func mayRead( fromAddress: Value , _ aliasAnalysis: AliasAnalysis ) -> Bool {
97
+ switch aliasAnalysis. bridged. getMemBehavior ( bridged, fromAddress. bridged) {
98
+ case . MayRead, . MayReadWrite, . MayHaveSideEffects:
99
+ return true
100
+ default :
101
+ return false
102
+ }
103
+ }
104
+
105
+ func mayWrite( toAddress: Value , _ aliasAnalysis: AliasAnalysis ) -> Bool {
106
+ switch aliasAnalysis. bridged. getMemBehavior ( bridged, toAddress. bridged) {
107
+ case . MayWrite, . MayReadWrite, . MayHaveSideEffects:
108
+ return true
109
+ default :
110
+ return false
111
+ }
112
+ }
113
+
114
+ func mayReadOrWrite( address: Value , _ aliasAnalysis: AliasAnalysis ) -> Bool {
115
+ switch aliasAnalysis. bridged. getMemBehavior ( bridged, address. bridged) {
116
+ case . MayRead, . MayWrite, . MayReadWrite, . MayHaveSideEffects:
117
+ return true
118
+ default :
119
+ return false
120
+ }
121
+ }
122
+ }
123
+
122
124
private func getMemoryEffect( ofApply apply: ApplySite , for address: Value , path: SmallProjectionPath , _ context: FunctionPassContext ) -> SideEffects . Memory {
123
125
let calleeAnalysis = context. calleeAnalysis
124
126
let visitor = SideEffectsVisitor ( apply: apply, calleeAnalysis: calleeAnalysis, isAddress: true )
0 commit comments