[llvm] [AA] Refine ModRefInfo taking into account `errnomem` location (PR #157495)

Antonio Frighetto via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 16 05:31:02 PDT 2025


================
@@ -997,6 +998,19 @@ ModRefInfo BasicAAResult::getModRefInfo(const CallBase *Call,
   }
 
   ModRefInfo Result = ArgMR | OtherMR;
+
+  // Refine writes to errno memory. We can safely exclude the errno location if
+  // the given memory location is an identified function-local object, the size
+  // of the memory access is larger than the integer size, or if TBAA proves it
+  // does not alias errno.
+  if ((ErrnoMR | Result) != Result) {
+    if (isModSet(ErrnoMR) && !isIdentifiedFunctionLocal(Object) &&
----------------
antoniofrighetto wrote:

Hmm, right. Somehow I thought we could ignore reads (due to how we conceived errno), except that ignoring them would just lead to a less sound result. Thanks, updated, added another test as well.

https://github.com/llvm/llvm-project/pull/157495


More information about the llvm-commits mailing list