summaryrefslogtreecommitdiff
path: root/sim/sh
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2021-11-06 21:09:08 -0400
committerMike Frysinger <vapier@gentoo.org>2021-11-06 21:09:08 -0400
commit81817dacd6dd6f8204518ad50e0c8b534d6a4366 (patch)
treef847d7f68ba634a2d66a9ab948f9ae8e8d384855 /sim/sh
parenta11cd3ddb2af90da3e5af9917a3cf1c749479983 (diff)
downloadbinutils-gdb-81817dacd6dd6f8204518ad50e0c8b534d6a4366.tar.gz
sim: sh: fix conversion of PC to an integer
On LLP64 targets where sizeof(long) != sizeof(void*), this code fails: sim/sh/interp.c:704:24: error: cast from pointer to integer of different size -Werror=pointer-to-int-cast] 704 | do { memstalls += ((((long) PC & 3) != 0) ? (n) : ((n) - 1)); } while (0) | ^ Since this code simply needs to check alignment, cast it using uintptr_t which is the right type for this.
Diffstat (limited to 'sim/sh')
-rw-r--r--sim/sh/interp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sim/sh/interp.c b/sim/sh/interp.c
index c502b21b49f..93923fa2c56 100644
--- a/sim/sh/interp.c
+++ b/sim/sh/interp.c
@@ -701,7 +701,7 @@ do { \
#else
#define MA(n) \
- do { memstalls += ((((long) PC & 3) != 0) ? (n) : ((n) - 1)); } while (0)
+ do { memstalls += ((((uintptr_t) PC & 3) != 0) ? (n) : ((n) - 1)); } while (0)
#define L(x) thislock = x;
#define TL(x) if ((x) == prevlock) stalls++;