On 29 October 2018 at 12:32, Richard Henderson
<[email protected]> wrote:
> On 10/29/18 12:06 PM, Peter Maydell wrote:
>> I'm having difficulty figuring out where this check has come from;
>> it doesn't seem to match up with the pseudocode and in any case
>> I don't think size can ever be > 3. 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}, so the check above can't ever fire.
>
> Correct.
>
> The check appeared with the initial commit for aa64 support, so perhaps Alex
> just trying to be defensive in his coding?
>
>> Am I missing something? As far as I can see we should simply delete
>> the can't-happen condition, which will probably satisfy coverity.
>
> Agreed.

As assert that size is in [0..3] would probably be reasonable too,
since the thing that requires it (that the immh field is 4-bit non-zero)
is something implicitly determined by the decode so it's a bit
action-at-a-distance. I'll put together a patch.

thanks
-- PMM

Reply via email to