[llvm] [FlattenCFG] Fix an Imprecise Usage of AA (PR #128117)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 14 05:49:45 PDT 2025
================
@@ -369,6 +369,22 @@ ModRefInfo AAResults::getModRefInfo(const CallBase *Call1,
return Result;
}
+// Check whether two instructions may read or write the same memory location.
+ModRefInfo AAResults::getModRefInfo(const Instruction *I1,
+ const Instruction *I2) {
+ SimpleAAQueryInfo AAQIP(*this);
+
+ // Early-exit if either instruction does not read or write memory.
+ if (!I1->mayReadOrWriteMemory() || !I2->mayReadOrWriteMemory())
+ return ModRefInfo::NoModRef;
+
+ if (const auto *Call2 = dyn_cast<CallBase>(I2))
+ return getModRefInfo(I1, Call2, AAQIP);
+
+ ModRefInfo MR = getModRefInfo(I1, MemoryLocation::getOrNone(I2), AAQIP);
+ return isModOrRefSet(MR) ? ModRefInfo::ModRef : ModRefInfo::NoModRef;
----------------
nikic wrote:
This could be more precise, but it's okay to start with.
https://github.com/llvm/llvm-project/pull/128117
More information about the llvm-commits
mailing list