[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] tci: Use uintptr_t for the GETPC() macro
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH] tci: Use uintptr_t for the GETPC() macro |
Date: |
Tue, 17 Apr 2012 11:02:12 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1 |
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<address@hidden>
>>> ---
>>> 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 address@hidden +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature