On 04/17/2012 10:49 AM, Stefan Weil wrote:
> Am 17.04.2012 18:40, schrieb Eric Blake:
>> On 04/17/2012 10:36 AM, Stefan Weil wrote:
>>> This completes commit 2050396801ca0c8359364d61eaadece951006057
>>> and fixes builds with TCI.
>>>
>>> Signed-off-by: Stefan Weil<s...@weilnetz.de>
>>> ---
>>>   exec-all.h |    2 +-
>>>   1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/exec-all.h b/exec-all.h
>>> index a963fd4..e766f9d 100644
>>> --- a/exec-all.h
>>> +++ b/exec-all.h
>>> @@ -284,7 +284,7 @@ extern int tb_invalidated_flag;
>>>      For all others, GETPC remains undefined (which makes TCI a
>>> little faster. */
>>>   # if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) ||
>>> defined(TARGET_SH4)
>>>   extern void *tci_tb_ptr;
>>> -#  define GETPC() tci_tb_ptr
>>> +#  define GETPC() (uintptr_t)tci_tb_ptr
>> Missing ().  Any time you add a cast to a macro, you need to fully
>> parenthesize the entire expression.
> 
> This is a good rule in general, but not needed here, because
> tci_tb_ptr is not a macro argument nor a macro!

Not true.  You _don't_ know how GETPC() will be used in context in
future code, and there are operators with higher precedence than
casting.  Consider:

GETPC()++ is silently accepted by your code, but with proper parentheses:

#define GETPC() ((uintptr_t)tci_tb_ptr)

then GETPC()++ will be a compilation error.

-- 
Eric Blake   ebl...@redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to