[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 13:54:21 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 &&
- (flags()->detect_odr_violation >= 2 || g->size != l->g->size) &&
+ for (ListOfGlobals *l = relevant_globals; l; l = l->next) {
+ if ((flags()->detect_odr_violation >= 2 || g->size != l->g->size) &&
----------------
vitalybuka wrote:
Do we need full list?
why not to keep just the first global, and raise an error on the first mismatch?
https://github.com/llvm/llvm-project/pull/100923
More information about the llvm-commits
mailing list