>>> On 20.06.17 at 12:06, <t...@xen.org> wrote: > At 03:36 -0600 on 20 Jun (1497929778), Jan Beulich wrote: >> >>> On 20.06.17 at 11:14, <t...@xen.org> wrote: >> > At 01:32 -0600 on 20 Jun (1497922345), Jan Beulich wrote: >> >> >>> On 19.06.17 at 18:57, <julien.gr...@arm.com> wrote: >> >> > --- a/xen/include/xen/mm.h >> >> > +++ b/xen/include/xen/mm.h >> >> > @@ -56,7 +56,7 @@ >> >> > >> >> > TYPE_SAFE(unsigned long, mfn); >> >> > #define PRI_mfn "05lx" >> >> > -#define INVALID_MFN _mfn(~0UL) >> >> > +#define INVALID_MFN (mfn_t){ ~0UL } >> >> >> >> While I don't expect anyone to wish to use a suffix expression on >> >> this constant, for maximum compatibility this should still be fully >> >> parenthesized, I think. Of course this should be easy enough to >> >> do while committing. >> >> >> >> Are you able to assure us that clang supports this gcc extension >> >> (compound literal for non-compound types) >> > >> > AIUI this is a C99 feature, not a GCCism. >> >> Most parts of it yes (it is a gcc extension in C89 mode only), but the >> specific use here isn't afaict: Compound literals outside of functions >> are static objects, and hence couldn't be used as initializers of other >> objects. > > Ah, I see. So would it be better to use > > #define INVALID_MFN ((const mfn_t) { ~0UL }) > > ?
While I think we should indeed consider adding the const, the above still is a static object, and hence still not suitable as an initializer as per C99 or C11. But as long as gcc and clang permit it, we're fine. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel