Hi Nathan, On Wed, Jun 24, 2020 at 6:02 AM Nathan Chancellor <natechancel...@gmail.com> wrote: > arch/powerpc/boot/main.c:107:18: warning: array comparison always > evaluates to a constant [-Wtautological-compare] > if (_initrd_end > _initrd_start) { > ^ > arch/powerpc/boot/main.c:155:20: warning: array comparison always > evaluates to a constant [-Wtautological-compare] > if (_esm_blob_end <= _esm_blob_start) > ^ > 2 warnings generated. > > These are not true arrays, they are linker defined symbols, which are > just addresses. Using the address of operator silences the warning > and does not change the resulting assembly with either clang/ld.lld > or gcc/ld (tested with diff + objdump -Dr). > > Link: https://github.com/ClangBuiltLinux/linux/issues/212 > Reported-by: Joel Stanley <j...@jms.id.au> > Signed-off-by: Nathan Chancellor <natechancel...@gmail.com> > --- > arch/powerpc/boot/main.c | 4 ++-- > arch/powerpc/boot/ps3.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c > index a9d209135975..cae31a6e8f02 100644 > --- a/arch/powerpc/boot/main.c > +++ b/arch/powerpc/boot/main.c > @@ -104,7 +104,7 @@ static struct addr_range prep_initrd(struct addr_range > vmlinux, void *chosen, > { > /* If we have an image attached to us, it overrides anything > * supplied by the loader. */ > - if (_initrd_end > _initrd_start) { > + if (&_initrd_end > &_initrd_start) { >
Are you sure that fix is correct? extern char _initrd_start[]; extern char _initrd_end[]; extern char _esm_blob_start[]; extern char _esm_blob_end[]; Of course the result of their comparison is a constant, as the addresses are constant. If clangs warns about it, perhaps that warning should be moved to W=1? But adding "&" is not correct, according to C. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds