[compiler-rt] [asan] Speed up ASan ODR indicator-based checking (PR #100923)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 1 11:19:28 PDT 2024


================
@@ -147,14 +163,21 @@ static void CheckODRViolationViaIndicator(const Global *g) {
     *odr_indicator = REGISTERED;
     return;
   }
+
+  // Fetch globals with the same ODR indicator.
+  auto *relevant_globals_lookup =
+      map_of_globals_by_indicator.find(g->odr_indicator);
+  if (!relevant_globals_lookup)
+    return;
+
+  ListOfGlobals *relevant_globals = relevant_globals_lookup->second;
   // If *odr_indicator is DEFINED, some module have already registered
   // externally visible symbol with the same name. This is an ODR violation.
-  for (ListOfGlobals *l = list_of_all_globals; l; l = l->next) {
-    if (g->odr_indicator == l->g->odr_indicator &&
----------------
vitalybuka wrote:

LGTM
I was confused by `odr_indicator` vs `*odr_indicator`.

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


More information about the llvm-commits mailing list