https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63888
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Kostya Serebryany from comment #6) > (In reply to Yury Gribov from comment #5) > > Perhaps ODR check should check that names of global variables match before > > issuing warning? > > The variables are generated by the compiler, right? > (These are switch tables) > > Do we want to instrument them at all? Generally, we do want to instrument even artificial variables, and on many of them buffer overflow is possible. > I.e. is a buffer overflow on these variables possible? > > If we don't instrument them we won't report an ODR violation. > > >> GCC with -fmerge-all-constants also merges many read-only constants, even > >> addressable ones, when they have the same content. > > Then I guess we may have other false positives. > We may want to disable -fmerge-all-constants under asan You haven't responded about the language thing, there is no such thing as ODR in C or Fortran, so you shouldn't report it. There are 31 (or 63) bits left in __has_dynamic_init field, can't one bit be used for whether ODR should be reported or not?