static void drd_report_race(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
+ if (drd_is_suppressed(addr, addr + size))
+ return;
+
DataRaceErrInfo drei;
drei.tid = VG_(get_running_tid)();
drei.addr = addr;
}
sg = running_thread_get_segment();
bm_access_range_load(sg->bm, addr, addr + size);
- if (bm_load_has_conflict_with(thread_get_danger_set(), addr, addr + size)
- && ! drd_is_suppressed(addr, addr + size))
+ if (bm_load_has_conflict_with(thread_get_danger_set(), addr, addr + size))
{
drd_report_race(addr, size, eLoad);
}
}
sg = running_thread_get_segment();
bm_access_load_1(sg->bm, addr);
- if (bm_load_1_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 1))
+ if (bm_load_1_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 1, eLoad);
}
}
sg = running_thread_get_segment();
bm_access_load_2(sg->bm, addr);
- if (bm_load_2_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 2))
+ if (bm_load_2_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 2, eLoad);
}
}
sg = running_thread_get_segment();
bm_access_load_4(sg->bm, addr);
- if (bm_load_4_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 4))
+ if (bm_load_4_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 4, eLoad);
}
}
sg = running_thread_get_segment();
bm_access_load_8(sg->bm, addr);
- if (bm_load_8_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 8))
+ if (bm_load_8_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 8, eLoad);
}
}
sg = running_thread_get_segment();
bm_access_range_store(sg->bm, addr, addr + size);
- if (bm_store_has_conflict_with(thread_get_danger_set(), addr, addr + size)
- && ! drd_is_suppressed(addr, addr + size))
+ if (bm_store_has_conflict_with(thread_get_danger_set(), addr, addr + size))
{
drd_report_race(addr, size, eStore);
}
}
sg = running_thread_get_segment();
bm_access_store_1(sg->bm, addr);
- if (bm_store_1_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 1))
+ if (bm_store_1_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 1, eStore);
}
}
sg = running_thread_get_segment();
bm_access_store_2(sg->bm, addr);
- if (bm_store_2_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 2))
+ if (bm_store_2_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 2, eStore);
}
}
sg = running_thread_get_segment();
bm_access_store_4(sg->bm, addr);
- if (bm_store_4_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 4))
+ if (bm_store_4_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 4, eStore);
}
}
sg = running_thread_get_segment();
bm_access_store_8(sg->bm, addr);
- if (bm_store_8_has_conflict_with(thread_get_danger_set(), addr)
- && ! drd_is_suppressed(addr, addr + 8))
+ if (bm_store_8_has_conflict_with(thread_get_danger_set(), addr))
{
drd_report_race(addr, 8, eStore);
}