qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 00/40] ppc patch queue 2015-06-03


From: Peter Maydell
Subject: Re: [Qemu-devel] [PULL 00/40] ppc patch queue 2015-06-03
Date: Fri, 5 Jun 2015 15:40:04 +0100

On 5 June 2015 at 15:35, Paolo Bonzini <address@hidden> wrote:
>
>
> On 05/06/2015 15:33, Peter Maydell wrote:
>> This is applied, but can you fix the clang sanitizer warnings,
>> please?
>>
>> hw/ppc/spapr_drc.c:59:24: runtime error: left shift of negative value -1
>> hw/ppc/spapr_drc.c:587:19: runtime error: left shift of negative value -1
>>
>> Problem looks to be in:
>> #define DRC_INDEX_ID_MASK (~(~0 << DRC_INDEX_TYPE_SHIFT))
>>
>> which is doing left shifts on a negative signed number.
>
> Speaking in general, I find that this makes code worse.  If you're using
> ~0 you probably want the value to extend with infinite ones.
>
> Using ~0u instead of ~0ull may cause problems down the line, and  ~0ul
> is even worse because it is not 64-bit safe.

I agree that C's semantics are terrible here (ideally
left shift of negative values should Just Work in the 2s
complement style, and right shift of negative values should
be an arithmetic shift). Unfortunately we're stuck with
the standard, which says this is undefined behaviour :-(

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]