RFR [XS]: 8236709: struct SwitchRange in HS violates C++ One Definition Rule - was RE: struct SwitchRange and C++ One Definition Rule [-Wodr]
Baesken, Matthias
matthias.baesken at sap.com
Wed Jan 8 08:10:30 UTC 2020
Hello, thanks for the input .
I renamed SwitchRangeC1 to C1SwitchRange and removed the unnecessary forward declaration .
New webrev :
http://cr.openjdk.java.net/~mbaesken/webrevs/8236709.1/
Best regards, Matthias
> >
> > Hello, please review this small fix for an issue that I was running into when
> experimenting with gcc8 and the -flto compiler flag .
> > When building with those flags, the gcc8 warns that the SwitchRange
> classes in HS code violate the C++ One Definition Rule .
> > So I renamed one of those 2 SwitchRange classes .
> >
> > Bug/webrev :
> >
> > https://bugs.openjdk.java.net/browse/JDK-8236709
> >
> > http://cr.openjdk.java.net/~mbaesken/webrevs/8236709.0/
>
> I think I would prefer the C1 "namespace" disambiguator to be a prefix
> rather than a suffix, to be consistent with usage in other parts of
> HotSpot. (GC code does that somewhat consistently, for example.) I
> don't recall seeing "namespace" suffixes used anywhere in HotSpot.
>
> I've occasionally considered proposing that C2 code be wrapped in a
> namespace. It grabs a bunch of very generic global type names ("Type",
> "Block", &etc; really!?) that can be annoying. (Though the diet for
> precompiled.hpp helped with that.) But anything like that is probably
> out of scope for the immediate problem.
>
> Giving C2 primacy of place (renaming the C1 class and letting C2 keep
> the "good" name) seems consistent with existing practice.
More information about the hotspot-dev
mailing list