[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200211203935.GA16176@ubuntu-m2-xlarge-x86>
Date: Tue, 11 Feb 2020 13:39:35 -0700
From: Nathan Chancellor <natechancellor@...il.com>
To: Michel Dänzer <michel@...nzer.net>
Cc: Jani Nikula <jani.nikula@...ux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@...ux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@...el.com>,
clang-built-linux@...glegroups.com,
intel-gfx@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
dri-devel@...ts.freedesktop.org
Subject: Re: [PATCH v2] drm/i915: Disable
-Wtautological-constant-out-of-range-compare
On Tue, Feb 11, 2020 at 10:41:48AM +0100, Michel Dänzer wrote:
> On 2020-02-11 7:13 a.m., Nathan Chancellor wrote:
> > A recent commit in clang added -Wtautological-compare to -Wall, which is
> > enabled for i915 so we see the following warning:
> >
> > ../drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1485:22: warning:
> > result of comparison of constant 576460752303423487 with expression of
> > type 'unsigned int' is always false
> > [-Wtautological-constant-out-of-range-compare]
> > if (unlikely(remain > N_RELOC(ULONG_MAX)))
> > ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
> >
> > This warning only happens on x86_64 but that check is relevant for
> > 32-bit x86 so we cannot remove it.
>
> That's suprising. AFAICT N_RELOC(ULONG_MAX) works out to the same value
> in both cases, and remain is a 32-bit value in both cases. How can it be
> larger than N_RELOC(ULONG_MAX) on 32-bit (but not on 64-bit)?
>
Hi Michel,
Can't this condition be true when UINT_MAX == ULONG_MAX? clang does not
warn on a 32-bit x86 build from what I remember. Honestly, my
understanding of overflow is pretty shoddy, this is mostly based on what
I have heard from others.
I sent a patch trying to remove that check but had it rejected:
https://lore.kernel.org/lkml/20191123195321.41305-1-natechancellor@gmail.com/
Cheers,
Nathan
Powered by blists - more mailing lists