Issue #18028: Fix aliasing issue in READ_TIMESTAMP() of ceval.c on x86_64,

when Python is configure with --with-tsc. Patch written by Christian Heimes.
This commit is contained in:
Victor Stinner 2014-12-12 13:17:41 +01:00
parent 437ffbdcd8
commit 0b881dd50f

View file

@ -65,9 +65,11 @@ ppc_getcounter(uint64 *v)
even in 64-bit mode, we need to use "a" and "d" for the lower and upper
32-bit pieces of the result. */
#define READ_TIMESTAMP(val) \
__asm__ __volatile__("rdtsc" : \
"=a" (((int*)&(val))[0]), "=d" (((int*)&(val))[1]));
#define READ_TIMESTAMP(val) do { \
unsigned int h, l; \
__asm__ __volatile__("rdtsc" : "=a" (l), "=d" (h)); \
(val) = ((uint64)l) | (((uint64)h) << 32); \
} while(0)
#else