Subject: Build failure with v4.9-rc1 and GCC trunk -- compiler weirdness

From: [email-masked] (Joe Perches)
Date: Wed, 01 Feb 2017 12:34:01 -0800

On Wed, 2017-02-01 at 19:53 +0000, Ard Biesheuvel wrote:
> On 1 February 2017 at 19:49, Joe Perches <[email-masked]> wrote:
[]
> > Or maybe add a BUILD_BUG_ON something like:
> > 
> > #define order_base_2(n)                                                 \
> > ({                                                                      \
> >         typeof(n) _n = n;                                               \
> >         BUILD_BUG_ON(__builtin_constant_p(_n) && _n < 0);               \
> >         __builtin_constant_p(_n) ? (_n < 2 ? _n : ilog2((_n) - 1) + 1)) \
> >                                  : __order_base_2(_n);                  \
> > })
> > 
> 
> This would interfere with the ability to use order_base_2() in
> initializers for global variables.

There aren't any as far as I can tell and would using
order_base_2() for a global initializer make sense?