Skip to content

Commit b03ef3c

Browse files
committed
AliasAnalysis: rename the main API functions
Instead of aliasAnalysis.mayRead(inst: i, fromAddress: a) it's more natural to write i.mayRead(fromAddress: a, aliasAnalysis)
1 parent 21a2b78 commit b03ef3c

File tree

2 files changed

+31
-29
lines changed

2 files changed

+31
-29
lines changed

SwiftCompilerSources/Sources/Optimizer/Analysis/AliasAnalysis.swift

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,6 @@ import SIL
1616
struct AliasAnalysis {
1717
let bridged: BridgedAliasAnalysis
1818

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-
4619
/// Returns the correct path for address-alias functions.
4720
static func getPtrOrAddressPath(for value: Value) -> SmallProjectionPath {
4821
let ty = value.type
@@ -119,6 +92,35 @@ struct AliasAnalysis {
11992
}
12093
}
12194

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+
122124
private func getMemoryEffect(ofApply apply: ApplySite, for address: Value, path: SmallProjectionPath, _ context: FunctionPassContext) -> SideEffects.Memory {
123125
let calleeAnalysis = context.calleeAnalysis
124126
let visitor = SideEffectsVisitor(apply: apply, calleeAnalysis: calleeAnalysis, isAddress: true)

SwiftCompilerSources/Sources/Optimizer/TestPasses/MemBehaviorDumper.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ let memBehaviorDumper = FunctionPass(name: "dump-mem-behavior") {
2828
for value in values where value.definingInstruction != inst {
2929

3030
if value.type.isAddress || value is AddressToPointerInst {
31-
let read = aliasAnalysis.mayRead(inst, fromAddress: value)
32-
let write = aliasAnalysis.mayWrite(inst, toAddress: value)
31+
let read = inst.mayRead(fromAddress: value, aliasAnalysis)
32+
let write = inst.mayWrite(toAddress: value, aliasAnalysis)
3333
print("PAIR #\(currentPair).")
3434
print(" \(inst)")
3535
print(" \(value)")

0 commit comments

Comments
 (0)