Skip to content

Commit 4366ac7

Browse files
Fix codegen for opencl tests
1 parent 2dccfa1 commit 4366ac7

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

llvm/include/llvm/Support/ModRef.h

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,21 @@ template <typename LocationEnum> class MemoryEffectsBase {
174174
/// Needed because `Data` may be non-zero by default unless explicitly
175175
/// cleared.
176176
bool onlyAccessTargetMemoryLocation() {
177-
return getWithoutLoc(static_cast<IRMemLocation>(
178-
llvm::InaccessibleTargetMemLocation::AARCH64_FPMR))
179-
.getWithoutLoc(static_cast<IRMemLocation>(
180-
llvm::InaccessibleTargetMemLocation::AARCH64_ZA))
181-
.doesNotAccessMemory();
177+
MemoryEffectsBase ME = *this;
178+
for (unsigned I = static_cast<int>(LocationEnum::ErrnoMem);
179+
I < static_cast<int>(LocationEnum::Last); I++)
180+
ME = ME.getWithoutLoc(static_cast<IRMemLocation>(I));
181+
return ME.doesNotAccessMemory();
182+
}
183+
184+
/// Create MemoryEffectsBase that can only access Target Memory Locations
185+
static MemoryEffectsBase
186+
setTargetMemLocationModRef(ModRefInfo MR = ModRefInfo::NoModRef) {
187+
MemoryEffectsBase FRMB = none();
188+
for (unsigned I = static_cast<int>(LocationEnum::ErrnoMem);
189+
I < static_cast<int>(LocationEnum::Last); I++)
190+
FRMB.setModRef(static_cast<Location>(I), MR);
191+
return FRMB;
182192
}
183193

184194
/// Create MemoryEffectsBase that can only access inaccessible or argument

llvm/lib/Transforms/IPO/FunctionAttrs.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ static void addLocAccess(MemoryEffects &ME, const MemoryLocation &Loc,
143143
ME |= MemoryEffects::argMemOnly(MR);
144144
ME |= MemoryEffects(IRMemLocation::ErrnoMem, MR);
145145
ME |= MemoryEffects(IRMemLocation::Other, MR);
146+
// Should also set the other Target Memory Locations as MR.
147+
// To compares with MemoryEffects::unknown() in addMemoryAttrs
148+
ME |= MemoryEffects::setTargetMemLocationModRef(MR);
146149
}
147150

148151
static void addArgLocs(MemoryEffects &ME, const CallBase *Call,

0 commit comments

Comments
 (0)