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
signature.asc
Description: OpenPGP digital signature