From: Paolo Bonzini <pbonzini@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-trivial@nongnu.org,
kraxel@redhat.com, peter maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH] Remove left shifts of negative signed integers
Date: Thu, 30 Jun 2016 16:15:46 -0400 (EDT) [thread overview]
Message-ID: <209727639.3312728.1467317746061.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1467315396-3628-1-git-send-email-jsnow@redhat.com>
----- Original Message -----
> From: "John Snow" <jsnow@redhat.com>
> To: qemu-devel@nongnu.org
> Cc: qemu-trivial@nongnu.org, pbonzini@redhat.com, kraxel@redhat.com, "peter maydell" <peter.maydell@linaro.org>,
> "John Snow" <jsnow@redhat.com>
> Sent: Thursday, June 30, 2016 9:36:36 PM
> Subject: [PATCH] Remove left shifts of negative signed integers
>
> Another exercise in placating Clang's increasingly strict -Werror mode.
> Technically, this is undefined behavior. In practice, -N<<M is the same
> as -(N<<M).
>
> Signed-off-by: John Snow <jsnow@redhat.com>
There's been discussions on this in the past; sorry but this is a
super-duper NACK.
GCC correctly puts this warning under -Wextra, and promises not to ever
make use of this facet of undefined behavior. The only correct patch
is the one that disables the warning for clang, and possibly adds
-fwrapv. In GCC, -fwrapv correctly silences ubsan's left-shift
and signed-overflow warnings. In Clang, this is reported at
https://llvm.org/bugs/show_bug.cgi?id=25552. It's a heavy hammer
but it's the safest options as compiler evolve.
Paolo
> ---
> hw/audio/fmopl.c | 2 +-
> target-i386/monitor.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c
> index 731110f..de9338b 100644
> --- a/hw/audio/fmopl.c
> +++ b/hw/audio/fmopl.c
> @@ -69,7 +69,7 @@ static int opl_dbg_maxchip,opl_dbg_chip;
> /* final output shift , limit minimum and maximum */
> #define OPL_OUTSB (TL_BITS+3-16) /* OPL output final shift 16bit */
> #define OPL_MAXOUT (0x7fff<<OPL_OUTSB)
> -#define OPL_MINOUT (-0x8000<<OPL_OUTSB)
> +#define OPL_MINOUT (-(0x8000<<OPL_OUTSB))
>
> /* -------------------- quality selection --------------------- */
>
> diff --git a/target-i386/monitor.c b/target-i386/monitor.c
> index fccfe40..94e9871 100644
> --- a/target-i386/monitor.c
> +++ b/target-i386/monitor.c
> @@ -36,7 +36,7 @@ static void print_pte(Monitor *mon, hwaddr addr,
> {
> #ifdef TARGET_X86_64
> if (addr & (1ULL << 47)) {
> - addr |= -1LL << 48;
> + addr |= -(1LL << 48);
> }
> #endif
> monitor_printf(mon, TARGET_FMT_plx ": " TARGET_FMT_plx
> --
> 2.5.5
>
>
next prev parent reply other threads:[~2016-06-30 20:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-30 19:36 [Qemu-devel] [PATCH] Remove left shifts of negative signed integers John Snow
2016-06-30 20:11 ` Peter Maydell
2016-06-30 20:13 ` John Snow
2016-06-30 20:16 ` Paolo Bonzini
2016-06-30 20:15 ` Paolo Bonzini [this message]
2016-06-30 20:20 ` John Snow
2016-06-30 20:32 ` Paolo Bonzini
2016-08-16 14:00 ` Peter Maydell
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=209727639.3312728.1467317746061.JavaMail.zimbra@redhat.com \
--to=pbonzini@redhat.com \
--cc=jsnow@redhat.com \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).