mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-11 01:15:37 +00:00
target-arm: Fix warn about implicit conversion
Clang warns about an implicit conversion as follows: /mnt/devops/code/qemu/target-arm/neon_helper.c:1075:1: warning: implicit conversion from 'int' to 'int8_t' (aka 'signed char') changes value from 128 to -128 [-Wconstant-conversion] NEON_VOP_ENV(qrshl_s8, neon_s8, 4) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /mnt/devops/code/qemu/target-arm/neon_helper.c:116:83: note: expanded from macro 'NEON_VOP_ENV' uint32_t HELPER(glue(neon_,name))(CPUARMState *env, uint32_t arg1, uint32_t arg2) \ ^ /mnt/devops/code/qemu/target-arm/neon_helper.c:106:5: note: expanded from macro '\ NEON_VOP_BODY' NEON_DO##n; \ ^~~~~~~~~~ <scratch space>:21:1: note: expanded from here NEON_DO4 ^~~~~~~~ /mnt/devops/code/qemu/target-arm/neon_helper.c:93:5: note: expanded from macro 'NEON_DO4' NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /mnt/devops/code/qemu/target-arm/neon_helper.c:1054:23: note: expanded from macro 'NEON_FN' dest = (1 << (sizeof(src1) * 8 - 1)); \ ~ ~~^~~~~~~~~~~~~~~~~~~~~~~~~ Fix it by casting to appropriate type. Backports commit 6bbbb0ac136102098a70b97ab0c07bc7bf53131c from qemu
This commit is contained in:
parent
ede1cae3dc
commit
4c880fba9d
|
@ -1045,13 +1045,24 @@ uint64_t HELPER(neon_qrshl_u64)(CPUARMState *env, uint64_t val, uint64_t shiftop
|
|||
return val;
|
||||
}
|
||||
|
||||
// Unicorn: Silences an implicit truncation warning with Clang, however
|
||||
// this can't be brought to MSVC as it doesn't
|
||||
// implement the typeof compiler extension
|
||||
#ifdef _MSC_VER
|
||||
#define SILENCE_NEON_WARNING(dest, src1) \
|
||||
(1 << (sizeof(src1) * 8 - 1));
|
||||
#else
|
||||
#define SILENCE_NEON_WARNING(dest, src1) \
|
||||
(typeof(dest))(1 << (sizeof(src1) * 8 - 1));
|
||||
#endif
|
||||
|
||||
#define NEON_FN(dest, src1, src2) do { \
|
||||
int8_t tmp; \
|
||||
tmp = (int8_t)src2; \
|
||||
if (tmp >= (ssize_t)sizeof(src1) * 8) { \
|
||||
if (src1) { \
|
||||
SET_QC(); \
|
||||
dest = (1 << (sizeof(src1) * 8 - 1)); \
|
||||
dest = SILENCE_NEON_WARNING(dest, src1) \
|
||||
if (src1 > 0) { \
|
||||
dest--; \
|
||||
} \
|
||||
|
|
Loading…
Reference in a new issue