Skip to content

Commit a502c65

Browse files
committed
[BuildLibCalls] Add helper for setting memory effects (NFC)
Remove reliance on having dedicated setters and getters on Function for every possible memory effect combination.
1 parent 1900634 commit a502c65

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

llvm/lib/Transforms/Utils/BuildLibCalls.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,42 +76,46 @@ static bool setNoReturn(Function &F) {
7676
return true;
7777
}
7878

79+
static bool setMemoryEffects(Function &F, MemoryEffects ME) {
80+
MemoryEffects OrigME = F.getMemoryEffects();
81+
MemoryEffects NewME = OrigME & ME;
82+
if (OrigME == NewME)
83+
return false;
84+
F.setMemoryEffects(NewME);
85+
return true;
86+
}
87+
7988
static bool setOnlyAccessesInaccessibleMemory(Function &F) {
80-
if (F.onlyAccessesInaccessibleMemory())
89+
if (!setMemoryEffects(F, MemoryEffects::inaccessibleMemOnly()))
8190
return false;
82-
F.setOnlyAccessesInaccessibleMemory();
8391
++NumInaccessibleMemOnly;
8492
return true;
8593
}
8694

8795
static bool setOnlyReadsMemory(Function &F) {
88-
if (F.onlyReadsMemory())
96+
if (!setMemoryEffects(F, MemoryEffects::readOnly()))
8997
return false;
90-
F.setOnlyReadsMemory();
9198
++NumReadOnly;
9299
return true;
93100
}
94101

95102
static bool setOnlyWritesMemory(Function &F) {
96-
if (F.onlyWritesMemory()) // writeonly or readnone
103+
if (!setMemoryEffects(F, MemoryEffects::writeOnly()))
97104
return false;
98105
++NumWriteOnly;
99-
F.setOnlyWritesMemory();
100106
return true;
101107
}
102108

103109
static bool setOnlyAccessesArgMemory(Function &F) {
104-
if (F.onlyAccessesArgMemory())
110+
if (!setMemoryEffects(F, MemoryEffects::argMemOnly()))
105111
return false;
106-
F.setOnlyAccessesArgMemory();
107112
++NumArgMemOnly;
108113
return true;
109114
}
110115

111116
static bool setOnlyAccessesInaccessibleMemOrArgMem(Function &F) {
112-
if (F.onlyAccessesInaccessibleMemOrArgMem())
117+
if (!setMemoryEffects(F, MemoryEffects::inaccessibleOrArgMemOnly()))
113118
return false;
114-
F.setOnlyAccessesInaccessibleMemOrArgMem();
115119
++NumInaccessibleMemOrArgMemOnly;
116120
return true;
117121
}

0 commit comments

Comments
 (0)