All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Nathan Chancellor <natechancellor@gmail.com>
Cc: clang-built-linux@googlegroups.com,
	"Michel Dänzer" <michel@daenzer.net>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915: Disable -Wtautological-constant-out-of-range-compare
Date: Fri, 14 Feb 2020 00:05:24 +0200	[thread overview]
Message-ID: <87mu9mw3bv.fsf@intel.com> (raw)
In-Reply-To: <20200213214812.GA7980@ubuntu-m2-xlarge-x86>

On Thu, 13 Feb 2020, Nathan Chancellor <natechancellor@gmail.com> wrote:
> On Thu, Feb 13, 2020 at 04:37:15PM +0200, Jani Nikula wrote:
>> On Wed, 12 Feb 2020, Michel Dänzer <michel@daenzer.net> wrote:
>> > On 2020-02-12 6:07 p.m., Nathan Chancellor wrote:
>> >> On Wed, Feb 12, 2020 at 09:52:52AM +0100, Michel Dänzer wrote:
>> >>> On 2020-02-11 9:39 p.m., Nathan Chancellor wrote:
>> >>>> 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?
>> >>>
>> >>> Oh, right, I think I was wrongly thinking long had 64 bits even on 32-bit.
>> >>>
>> >>>
>> >>> Anyway, this suggests a possible better solution:
>> >>>
>> >>> #if UINT_MAX == ULONG_MAX
>> >>> 	if (unlikely(remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>> #endif
>> >>>
>> >>>
>> >>> Or if that can't be used for some reason, something like
>> >>>
>> >>> 	if (unlikely((unsigned long)remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>>
>> >>> should silence the warning.
>> >> 
>> >> I do like this one better than the former.
>> >
>> > FWIW, one downside of this one compared to all alternatives (presumably)
>> > is that it might end up generating actual code even on 64-bit, which
>> > always ends up skipping the return.
>> 
>> I like this better than the UINT_MAX == ULONG_MAX comparison because
>> that creates a dependency on the type of remain.
>> 
>> Then again, a sufficiently clever compiler could see through the cast,
>> and flag the warning anyway...
>
> Would you prefer a patch that adds that cast rather than silencing the
> warning outright? It does appear to work for clang.

I'd take the cast.

If that fails for whatever reason, per-file

CFLAGS_gem/i915_gem_execbuffer.o = $(call cc-disable-warning, tautological-constant-out-of-range-compare)

over subdir-ccflags-y would be preferrable I think.

BR,
Jani.



>
> Cheers,
> Nathan

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Nathan Chancellor <natechancellor@gmail.com>
Cc: clang-built-linux@googlegroups.com,
	"Michel Dänzer" <michel@daenzer.net>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915: Disable -Wtautological-constant-out-of-range-compare
Date: Fri, 14 Feb 2020 00:05:24 +0200	[thread overview]
Message-ID: <87mu9mw3bv.fsf@intel.com> (raw)
In-Reply-To: <20200213214812.GA7980@ubuntu-m2-xlarge-x86>

On Thu, 13 Feb 2020, Nathan Chancellor <natechancellor@gmail.com> wrote:
> On Thu, Feb 13, 2020 at 04:37:15PM +0200, Jani Nikula wrote:
>> On Wed, 12 Feb 2020, Michel Dänzer <michel@daenzer.net> wrote:
>> > On 2020-02-12 6:07 p.m., Nathan Chancellor wrote:
>> >> On Wed, Feb 12, 2020 at 09:52:52AM +0100, Michel Dänzer wrote:
>> >>> On 2020-02-11 9:39 p.m., Nathan Chancellor wrote:
>> >>>> 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?
>> >>>
>> >>> Oh, right, I think I was wrongly thinking long had 64 bits even on 32-bit.
>> >>>
>> >>>
>> >>> Anyway, this suggests a possible better solution:
>> >>>
>> >>> #if UINT_MAX == ULONG_MAX
>> >>> 	if (unlikely(remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>> #endif
>> >>>
>> >>>
>> >>> Or if that can't be used for some reason, something like
>> >>>
>> >>> 	if (unlikely((unsigned long)remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>>
>> >>> should silence the warning.
>> >> 
>> >> I do like this one better than the former.
>> >
>> > FWIW, one downside of this one compared to all alternatives (presumably)
>> > is that it might end up generating actual code even on 64-bit, which
>> > always ends up skipping the return.
>> 
>> I like this better than the UINT_MAX == ULONG_MAX comparison because
>> that creates a dependency on the type of remain.
>> 
>> Then again, a sufficiently clever compiler could see through the cast,
>> and flag the warning anyway...
>
> Would you prefer a patch that adds that cast rather than silencing the
> warning outright? It does appear to work for clang.

I'd take the cast.

If that fails for whatever reason, per-file

CFLAGS_gem/i915_gem_execbuffer.o = $(call cc-disable-warning, tautological-constant-out-of-range-compare)

over subdir-ccflags-y would be preferrable I think.

BR,
Jani.



>
> Cheers,
> Nathan

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Nathan Chancellor <natechancellor@gmail.com>
Cc: "Michel Dänzer" <michel@daenzer.net>,
	clang-built-linux@googlegroups.com,
	intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915: Disable -Wtautological-constant-out-of-range-compare
Date: Fri, 14 Feb 2020 00:05:24 +0200	[thread overview]
Message-ID: <87mu9mw3bv.fsf@intel.com> (raw)
In-Reply-To: <20200213214812.GA7980@ubuntu-m2-xlarge-x86>

On Thu, 13 Feb 2020, Nathan Chancellor <natechancellor@gmail.com> wrote:
> On Thu, Feb 13, 2020 at 04:37:15PM +0200, Jani Nikula wrote:
>> On Wed, 12 Feb 2020, Michel Dänzer <michel@daenzer.net> wrote:
>> > On 2020-02-12 6:07 p.m., Nathan Chancellor wrote:
>> >> On Wed, Feb 12, 2020 at 09:52:52AM +0100, Michel Dänzer wrote:
>> >>> On 2020-02-11 9:39 p.m., Nathan Chancellor wrote:
>> >>>> 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?
>> >>>
>> >>> Oh, right, I think I was wrongly thinking long had 64 bits even on 32-bit.
>> >>>
>> >>>
>> >>> Anyway, this suggests a possible better solution:
>> >>>
>> >>> #if UINT_MAX == ULONG_MAX
>> >>> 	if (unlikely(remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>> #endif
>> >>>
>> >>>
>> >>> Or if that can't be used for some reason, something like
>> >>>
>> >>> 	if (unlikely((unsigned long)remain > N_RELOC(ULONG_MAX)))
>> >>> 		return -EINVAL;
>> >>>
>> >>> should silence the warning.
>> >> 
>> >> I do like this one better than the former.
>> >
>> > FWIW, one downside of this one compared to all alternatives (presumably)
>> > is that it might end up generating actual code even on 64-bit, which
>> > always ends up skipping the return.
>> 
>> I like this better than the UINT_MAX == ULONG_MAX comparison because
>> that creates a dependency on the type of remain.
>> 
>> Then again, a sufficiently clever compiler could see through the cast,
>> and flag the warning anyway...
>
> Would you prefer a patch that adds that cast rather than silencing the
> warning outright? It does appear to work for clang.

I'd take the cast.

If that fails for whatever reason, per-file

CFLAGS_gem/i915_gem_execbuffer.o = $(call cc-disable-warning, tautological-constant-out-of-range-compare)

over subdir-ccflags-y would be preferrable I think.

BR,
Jani.



>
> Cheers,
> Nathan

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2020-02-13 22:15 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-11  5:08 [PATCH] drm/i915: Disable -Wtautological-constant-out-of-range-compare Nathan Chancellor
2020-02-11  5:08 ` Nathan Chancellor
2020-02-11  5:08 ` [Intel-gfx] " Nathan Chancellor
2020-02-11  5:29 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
2020-02-11  6:13 ` [PATCH v2] " Nathan Chancellor
2020-02-11  6:13   ` Nathan Chancellor
2020-02-11  6:13   ` [Intel-gfx] " Nathan Chancellor
2020-02-11  9:41   ` Michel Dänzer
2020-02-11  9:41     ` Michel Dänzer
2020-02-11  9:41     ` [Intel-gfx] " Michel Dänzer
2020-02-11 20:39     ` Nathan Chancellor
2020-02-11 20:39       ` Nathan Chancellor
2020-02-11 20:39       ` [Intel-gfx] " Nathan Chancellor
2020-02-12  8:52       ` Michel Dänzer
2020-02-12  8:52         ` Michel Dänzer
2020-02-12  8:52         ` [Intel-gfx] " Michel Dänzer
2020-02-12 17:07         ` Nathan Chancellor
2020-02-12 17:07           ` Nathan Chancellor
2020-02-12 17:07           ` [Intel-gfx] " Nathan Chancellor
2020-02-12 17:17           ` Michel Dänzer
2020-02-12 17:17             ` Michel Dänzer
2020-02-12 17:17             ` [Intel-gfx] " Michel Dänzer
2020-02-13 14:37             ` Jani Nikula
2020-02-13 14:37               ` Jani Nikula
2020-02-13 14:37               ` Jani Nikula
2020-02-13 21:48               ` Nathan Chancellor
2020-02-13 21:48                 ` Nathan Chancellor
2020-02-13 21:48                 ` Nathan Chancellor
2020-02-13 22:05                 ` Jani Nikula [this message]
2020-02-13 22:05                   ` Jani Nikula
2020-02-13 22:05                   ` Jani Nikula
2020-02-13 22:43             ` Nick Desaulniers
2020-02-13 22:43               ` Nick Desaulniers
2020-02-13 22:43               ` [Intel-gfx] " Nick Desaulniers
2020-02-13 23:27               ` Nathan Chancellor
2020-02-13 23:27                 ` Nathan Chancellor
2020-02-13 23:27                 ` [Intel-gfx] " Nathan Chancellor
2020-02-11  6:58 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: Disable -Wtautological-constant-out-of-range-compare (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mu9mw3bv.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michel@daenzer.net \
    --cc=natechancellor@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.