Silence warnings with new GCC
Mario Torre
neugens.limasoftware at gmail.com
Thu Nov 26 20:32:58 UTC 2015
2015-11-26 20:37 GMT+01:00 Lindenmaier, Goetz <goetz.lindenmaier at sap.com>:
> Hi Andrew,
>
> I know about this problem ... I guess a change of mine causes these warnings.
> While I found a row of good fixes, these with ShouldNotReachHere are annoying.
>
> What you propose has been discussed in April: 8065585: Change ShouldNotReachHere() to never return.
> I didn't follow the discussion all to the end, but it wasn't done for some reason.
> Also, I think, one can overrule ShoudlNotReachHere() with -XX:SuppressError=...
FYI, I believe the full thread is this:
http://mail.openjdk.java.net/pipermail/hotspot-dev/2015-April/017990.html
Cheers,
Mario
> Best regards,
> Goetz.
>
> -----Original Message-----
> From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On Behalf Of Andrew Haley
> Sent: Thursday, November 26, 2015 6:24 PM
> To: build-dev <build-dev at openjdk.java.net>; hotspot-dev Source Developers <hotspot-dev at openjdk.java.net>
> Subject: Silence warnings with new GCC
>
> I've been getting a lot of warnings such as
>
> warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
>
> which error out with -Werror. Almost all of them are bogus. They are
> typically of the form
>
> unsigned size;
>
> if (i->get(26, 26)) { // float
> switch(i->get(31, 30)) {
> case 0b10:
> size = 2; break;
> case 0b01:
> size = 1; break;
> case 0b00:
> size = 0; break;
> default:
> ShouldNotReachHere();
> }
> } else {
> size = i->get(31, 31);
> }
>
> The problem here is that GCC does not know that ShouldNotReachHere()
> should be treated as an unreachable statement.
>
> The patch here fixes it. I'd rather do this than add pointless assignments
> all over the place. Thoughts? Opinions?
>
> Thanks,
>
> Andrew.
>
>
>
> diff --git a/src/share/vm/utilities/debug.hpp b/src/share/vm/utilities/debug.hpp
> --- a/src/share/vm/utilities/debug.hpp
> +++ b/src/share/vm/utilities/debug.hpp
> @@ -172,16 +172,24 @@
> BREAKPOINT; \
> } while (0)
>
> +#ifdef __GNUC__
> +# define UNREACHABLE __builtin_unreachable()
> +#else
> +# define UNREACHABLE do { } while (0)
> +#endif
> +
> #define ShouldNotReachHere() \
> do { \
> report_should_not_reach_here(__FILE__, __LINE__); \
> BREAKPOINT; \
> + UNREACHABLE; \
> } while (0)
>
> #define Unimplemented() \
> do { \
> report_unimplemented(__FILE__, __LINE__); \
> BREAKPOINT; \
> + UNREACHABLE; \
> } while (0)
>
> #define Untested(msg)
--
pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF
Fingerprint: BA39 9666 94EC 8B73 27FA FC7C 4086 63E3 80F2 40CF
Java Champion - Blog: http://neugens.wordpress.com - Twitter: @neugens
Proud GNU Classpath developer: http://www.classpath.org/
OpenJDK: http://openjdk.java.net/projects/caciocavallo/
Please, support open standards:
http://endsoftpatents.org/
More information about the build-dev
mailing list