[compiler-rt] [asan] Speed up ASan ODR indicator-based checking (PR #100923)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 15:36:57 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:
Instead of removal checking that indicator matches is enough
we can't keep just first one with UNREGISTERED, if we unregister it we don't know if there are other with same indicator are still registered
https://github.com/llvm/llvm-project/pull/100923
More information about the llvm-commits
mailing list