unicorn/qemu/target
Peter Maydell 5aa5ebbcc9
target/arm: Remove can't-happen if() from handle_vec_simd_shli()
In handle_vec_simd_shli() we have a check:

if (size > 3 && !is_q) {
    unallocated_encoding(s);
    return;
}

However this can never be true, because we calculate
int size = 32 - clz32(immh) - 1;
where immh is a 4 bit field which we know cannot be all-zeroes.
So the clz32() return must be in {28,29,30,31} and the resulting
size is in {0,1,2,3}, and "size > 3" is never true.

This unnecessary code confuses Coverity's analysis:
in CID 1396476 it thinks we might later index off the
end of an array because the condition implies that we
might have a size > 3.

Remove the code, and instead assert that the size is in [0..3],
since the decode that enforces that is somewhat distant from
this function.

Backports commit f6c98f91f56031141a47f86225fdc30f0f9f84fb from qemu
2018-11-11 08:37:16 -05:00
..
arm target/arm: Remove can't-happen if() from handle_vec_simd_shli() 2018-11-11 08:37:16 -05:00
i386 i386: Add PKU on Skylake-Server CPU model 2018-11-11 08:09:47 -05:00
m68k target/m68k: use EXCP_ILLEGAL instead of EXCP_UNSUPPORTED 2018-11-11 08:30:57 -05:00
mips target/mips: Amend MXU ASE overview note 2018-11-11 07:30:31 -05:00
sparc Sparc increase ttl number 2018-10-06 04:55:52 -04:00