All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: Raghavendra D Prabhu <raghu.prabhu13@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH 2/3] Add fno-strict-overflow
Date: Tue, 5 Jul 2011 21:30:44 +0100	[thread overview]
Message-ID: <CAJSP0QVwQ4Tffgq=_KQsfR2=1-0PfUg34GGEbL+JjOMpZK0PNg@mail.gmail.com> (raw)
In-Reply-To: <20110705153615.GB4463@Xye>

On Tue, Jul 5, 2011 at 4:36 PM, Raghavendra D Prabhu
<raghu.prabhu13@gmail.com> wrote:
> * On Mon, Jul 04, 2011 at 11:38:30PM +0100, Peter Maydell
> <peter.maydell@linaro.org> wrote:
>>
>> On 4 July 2011 23:00, Raghavendra D Prabhu <raghu.prabhu13@gmail.com>
>> wrote:
>>>
>>> This is to avoid gcc optimizating out the comparison in assert,
>>> due to assumption of signed overflow being undefined by default
>>> (-Werror=strict-overflow).
>>
>>> --- a/Makefile.hw
>>> +++ b/Makefile.hw
>>> @@ -9,7 +9,7 @@ include $(SRC_PATH)/rules.mak
>
>>> $(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw)
>
>>> -QEMU_CFLAGS+=-I.. -I$(SRC_PATH)/fpu
>>> +QEMU_CFLAGS+=-I.. -I$(SRC_PATH)/fpu -fno-strict-overflow
>>
>> Can you give a more detailed description of the problem this is trying
>> to solve? I think it would be nicer if we could remove the assumptions
>> about signed overflows instead, if that's practical.
>
> Following line in pcie.c:pcie_add_capability:505
>
>    assert(offset < offset + size);
>
> is what the compiler was warning about. The compiler optimizes out that
> comparison without fno-strict-overflow flag. More information about it
> is here -  http://www.airs.com/blog/archives/120 -- as already mentioned by
> Stefan.
>>
>> (Also, if we do want to add this compiler flag then it ought to be
>> done in configure I think, as we do for -fno-strict-aliasing.)
>>
> Globally adding that flag can limits the optimizations of gcc since in
> other places (loops) the undefined behavior can be advantageous, hence
> added only to Makefile.hw.

Doing this on a per-subsystem or per-file basis does not make sense to
me.  This is a general C coding issue that needs to be settled for the
entire codebase.  We will not catch instances of overflow slipping in
during patch review, so limiting the scope of -fno-strict-overflow is
not feasible.

I suggest we cover all of QEMU with -fwrapv instead of worrying about
-fno-strict-overflow.  That way we can get some optimizations and it
reflects the model that we are all assuming:
"This option instructs the compiler to assume that signed arithmetic
overflow of addition, subtraction and multiplication wraps around
using twos-complement representation. This flag enables some
optimizations and disables others. This option is enabled by default
for the Java front-end, as required by the Java language
specification."
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Code-Gen-Options.html

Stefan

  reply	other threads:[~2011-07-05 20:30 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-04 21:59 [PATCH 0/3] Build fixes Raghavendra D Prabhu
2011-07-04 21:59 ` [Qemu-devel] " Raghavendra D Prabhu
2011-07-04 22:00 ` [PATCH 1/3] Avoid the use of deprecated gnutls gnutls_*_set_priority functions Raghavendra D Prabhu
2011-07-04 22:00   ` [Qemu-devel] " Raghavendra D Prabhu
2011-08-22  8:26   ` Stefan Hajnoczi
2011-08-22  8:26     ` [Qemu-devel] " Stefan Hajnoczi
2011-08-22 10:13     ` Gerd Hoffmann
2011-08-22 10:13       ` [Qemu-devel] " Gerd Hoffmann
2011-08-25 10:54   ` Stefan Hajnoczi
2011-08-25 10:54     ` [Qemu-devel] " Stefan Hajnoczi
2011-08-25 11:02     ` Daniel P. Berrange
2011-08-25 11:02       ` [Qemu-devel] " Daniel P. Berrange
2011-07-04 22:00 ` [PATCH 2/3] Add fno-strict-overflow Raghavendra D Prabhu
2011-07-04 22:00   ` [Qemu-devel] " Raghavendra D Prabhu
2011-07-04 22:38   ` Peter Maydell
2011-07-04 22:38     ` Peter Maydell
2011-07-05  5:41     ` Stefan Hajnoczi
2011-07-05  5:41       ` Stefan Hajnoczi
2011-07-05  9:34       ` Stefan Hajnoczi
2011-07-05  9:34         ` Stefan Hajnoczi
2011-07-05 15:36     ` Raghavendra D Prabhu
2011-07-05 20:30       ` Stefan Hajnoczi [this message]
2011-07-07 21:51         ` Raghavendra D Prabhu
2011-07-04 22:00 ` [PATCH 3/3] Avoid Wunsed-but-set warnings (or errors in case of Werror) Raghavendra D Prabhu
2011-07-04 22:00   ` [Qemu-devel] " Raghavendra D Prabhu
2011-07-05  6:15   ` Markus Armbruster
2011-07-05  6:15     ` Markus Armbruster
2011-07-05  7:02     ` Peter Maydell
2011-07-05  7:02       ` Peter Maydell
2011-07-05  7:49       ` Markus Armbruster
2011-07-05  8:05         ` Paolo Bonzini

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='CAJSP0QVwQ4Tffgq=_KQsfR2=1-0PfUg34GGEbL+JjOMpZK0PNg@mail.gmail.com' \
    --to=stefanha@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=raghu.prabhu13@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.