|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Ping: [PATCH v2] dom0-build: fix build with clang5
On 17.07.2019 08:47, Jan Beulich wrote:
> With non-empty CONFIG_DOM0_MEM clang5 produces
>
> dom0_build.c:344:24: error: use of logical '&&' with constant operand
> [-Werror,-Wconstant-logical-operand]
> if ( !dom0_mem_set && CONFIG_DOM0_MEM[0] )
> ^ ~~~~~~~~~~~~~~~~~~
> dom0_build.c:344:24: note: use '&' for a bitwise operation
> if ( !dom0_mem_set && CONFIG_DOM0_MEM[0] )
> ^~
> &
> dom0_build.c:344:24: note: remove constant to silence this warning
> if ( !dom0_mem_set && CONFIG_DOM0_MEM[0] )
> ~^~~~~~~~~~~~~~~~~~~~~
> 1 error generated.
>
> Obviously neither of the two suggestions are an option here. Oddly
> enough swapping the operands of the && helps, while e.g. casting or
> parenthesizing doesn't. Another workable variant looks to be the use of
> !! on the constant.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> ---
> v2: Also adjust the Arm incarnation of the same construct.
> ---
> I'm open to going the !! or yet some different route (but not really the
> suggested strlen() one). No matter which one we choose, I'm afraid it is
> going to remain guesswork what newer (and future) versions of clang will
> choke on.
I guess the disagreement on how to exactly address the issue has
stalled this. But I think we should rather have _some_ (e.g.
this) solution in the repo, than continue to ship versions which
don't build. People wanting to beautify the code further could
then submit incremental patches.
Jan
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -2125,7 +2125,7 @@ int __init construct_dom0(struct domain
>
> printk("*** LOADING DOMAIN 0 ***\n");
>
> - if ( !dom0_mem_set && CONFIG_DOM0_MEM[0] )
> + if ( CONFIG_DOM0_MEM[0] && !dom0_mem_set )
> parse_dom0_mem(CONFIG_DOM0_MEM);
>
> if ( dom0_mem <= 0 )
> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -341,7 +341,7 @@ unsigned long __init dom0_compute_nr_pag
> unsigned long avail = 0, nr_pages, min_pages, max_pages;
> bool need_paging;
>
> - if ( !dom0_mem_set && CONFIG_DOM0_MEM[0] )
> + if ( CONFIG_DOM0_MEM[0] && !dom0_mem_set )
> parse_dom0_mem(CONFIG_DOM0_MEM);
>
> for_each_node_mask ( node, dom0_nodes )
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |