RFR: 8062808: Turn on the -Wreturn-type warning
John Rose
john.r.rose at oracle.com
Wed Nov 5 20:20:27 UTC 2014
This is a good gain in robustness. Like Coleen, I'm agreeably surprised at the relatively small number of fixes needed.
On Nov 5, 2014, at 11:56 AM, Stefan Karlsson <stefan.karlsson at oracle.com> wrote:
> ...
> A benefit of using the noreturn annotation would be to be able to turn on -Wuninitialized and get away with constructs like this:
> int a;
> switch (v) {
> case 1: a = x; break;
> case 2: a = y; break;
> default: ShouldNotReachHere();
> }
> use(a);
>
> I have a patch were I started testing this, but there are a number of places were the compiler doesn't manage to infer that all paths taken will initialize the variable and we have to change the code to make it easier for the compiler to understand it. This will probably help with the readability of the code, so that is probably not something negative.
I think this is a reasonable goal, worth a follow-up bug.
One concern: The noreturn annotation might differ in effect from compiler to compiler, making it difficult to have one (simple) source base that pleases all the compilers.
Here's a suggestion: Define a macro along these lines:
#define AFTER_NORETURN(code) {ShouldNotReachHere();code;}
Use it for your two "Mute compiler" lines. For compilers which have noreturn, define it this way:
#define AFTER_NORETURN(code) /*nothing*/
Thanks for pursuing these cleanups.
— John
More information about the hotspot-dev
mailing list