2015-11-26 20:37 GMT+01:00 Lindenmaier, Goetz <[email protected]>:
> 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:[email protected]] On Behalf Of 
> Andrew Haley
> Sent: Thursday, November 26, 2015 6:24 PM
> To: build-dev <[email protected]>; hotspot-dev Source Developers 
> <[email protected]>
> 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/

Reply via email to