https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61043
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to andysem from comment #10) > (In reply to Andrew Pinski from comment #9) > > > > I think this testcase is violating C++ ODR. In that > > INSTRUCTION_SET::my_simd_func_impl is the same between the TUs. If you had > > used an anonymous namespace, it should have worked correctly. If anonymous > > namespace does not work, please file a separate bug. > > INSTRUCTION_SET is defined differently for the two translation units, so we > essentially have sse2::my_simd_func_impl and avx::my_simd_func_impl. This > does not violate ODR. Oh I did not notice INSTRUCTION_SET was defined on the command line. as I said please file a different bug.