[compiler-rt] [TySan] Fix struct access with different bases (PR #120412)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 13 04:29:11 PST 2025


================
@@ -131,6 +131,14 @@ static bool isAliasingLegalUp(tysan_type_descriptor *TDA,
           break;
       }
 
+      // This offset can't be negative. Therefore we must be accessing something
+      // partially inside the last type
+      // We shouldn't check this if we are on the first member, Idx will
+      // underflow, The first member can be offset in rare cases such as
+      // llvm::cl::Option.
+      if (TDA->Struct.Members[Idx].Offset > OffsetA && Idx > 0)
+        Idx -= 1;
----------------
gbMattN wrote:

That sounds right, yes. I think I encountered an error when building llvm with `llvm::cl::Option` where this was the case, but on second touch that sounds like a separate problem...

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


More information about the llvm-commits mailing list