|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] docs/misra: add exceptions to rules
On 23.08.2023 02:19, Stefano Stabellini wrote:
> On Tue, 22 Aug 2023, Jan Beulich wrote:
>> (re-adding xen-devel@)
>>
>> On 22.08.2023 17:09, Nicola Vetrini wrote:
>>>
>>>>>> + - Switch with a controlling value incompatible with labeled
>>>>>> + statements
>>>>>
>>>>> What does this mean?
>>>>
>>>> I am not certain about this one actually. It could be when we have:
>>>>
>>>> switch (var) {
>>>> case 1:
>>>> something();
>>>> break;
>>>> case 2:
>>>> something();
>>>> break;
>>>> }
>>>>
>>>> and var could be 3 in theory?
>>>>
>>>> Nicola, please confirm.
>>>>
>>>>
>>>
>>> This one is about case labels that are statically determined not to be
>>> reachable (and hence
>>> saying that the code under that label is unreachable is not inaccurate)
>>> because the
>>> controlling expression of the switch statement can never have such
>>> value. An example below:
>>>
>>> $ cat p.c
>>> int f(void) {
>>> char c;
>>> switch (c) {
>>> case 260:
>>> return 260;
>>> case 4:
>>> return 4;
>>> }
>>> }
>>>
>>> $ eclair_env -enable=MC3.R2.1,B.REPORT.TXT -- gcc -c p.c
>>> violation for rule MC3.R2.1: (required) A project shall not contain
>>> unreachable code. (untagged)
>>> p.c:3.3-3.8: Loc #1 [culprit: `switch' statement has a controlling value
>>> incompatible with labeled statement]
>>> switch (c) {
>>> <~~~~>
>>> p.c:5.14-5.16: Loc #2 [evidence: integer literal is unreachable]
>>> return 260;
>>> <~>
>>>
>>> This is also true for things like
>>>
>>> switch(sizeof(int)) {
>>> case 2:
>>> ...
>>> case 4:
>>> ...
>>> }
>>
>> Ah yes, we certainly have quite a few of those. Not sure how to best
>> describe such for the doc, but what was suggested (still visible at
>> the top) doesn't get this across, I'm afraid,
>
> What about: "switch with a controlling value statically determined not
> to match one or more case statements"
Sounds okay, assuming this is the only case we want to treat specially.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |