[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of arithmetic
- To: Jan Beulich <jbeulich@xxxxxxxx>
- From: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
- Date: Wed, 4 Nov 2026 15:28:09 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YIdISH3GrjazHmecmvBpMjJGTcsxz7q0z/8VV+GeRNo=; b=Nm2WOeFT40ePf3phA6vjRWOk9ySliaZCH3kgWuMzjgH3Jnh6jT0STPB6tFtz6txCzqPwjdU5kpikoqJlCRJG7jKVF9bMMbJRhVgAJ1TkPBtOXFWbyO+V+UBgMaCRryLKHO1L3f41OGMBZb3KW9mE30PKvScVyK4ZO5qqicW2tInimFweWJUOmhRVR+lWBeEYKAHrTiAlp/XUCS8wQSHs2lLYH7PP62F7oxQwFbZ4GYRs+lQK9d2uL9QJrmAfe5jPEvxo/2+x/Z+XEw7ghDYhjT4FAv98bYXHetb2+psyMDKNKVSZkmDraiZiW2lEP3BQCeb75SRLt2nwdAbGr1Lmdg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DpM/l77s6jUROToJw7RxbhKc+xy0UDv2q47fJswSCZ0hDzCRGPcSl05/1NNiDzMWzXMXpd1JPp5+B+ElulI9C+AZc9fU8b/WF93rd+bMEp8kJOq7GcypI6P858Lq2VefTD+NT5o3I0jJJ9n2+e26Y0aSl3dXzIOD4JR9Mw3xnzy6Yg2AJDaQH7l8LIUpRggKkQTTxTyIaXKTIFFU8wiLvVY/L/WLn2Ys1sq933jUoOS1iU4SDBnpklR+sszaEEi2duMfuUYQdn9GBY1l2YKVGrqsi+H7KXmyNksZA355m4HBDr0ZW1xmgJffG97r0D303EIr7cmq6yUuTsagK+sVOw==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
- Authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
- Cc: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>, Doug Goldstein <cardoe@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger@xxxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- Delivery-date: Wed, 04 Nov 2026 13:28:29 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 11/2/26 17:45, Jan Beulich wrote:
On 02.11.2026 15:43, Dmytro Prokopchuk wrote:
On 11/2/26 12:52, Jan Beulich wrote:
On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
On 10/26/26 13:13, Jan Beulich wrote:
On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -335,6 +335,11 @@ still non-negative."
-config=MC3A2.R10.1,etypes+={safe,
"stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))",
"dst_type(ebool||boolean)"}
-doc_end
+-doc_begin="The result of relational, equality and logical negation operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5),
+so using it as an operand of an arithmetic operator is well defined and well known
to all Xen developers."
+-config=MC3A2.R10.1,etypes+={safe,
"stmt(operator(add||sub||mul||add_assign||sub_assign))",
"src_type(ebool||boolean)"}
+-doc_end
Why the restriction to add/sub/mul? The text ...
Because this is the pattern found in the Eclair's report, and it can be
deviated safely (as opposed to unary minus, division and remainder which
are not included intentionally).
Division and remainder aren't very useful with boolean operands, so can
surely be left out. However, more generally: How does "Eclair's report"
matter here? In deviation wording we want to go from what the Misra spec
says. The spec covers all operators. Hence any special casing we do
wants to be justified. And, right now at least, I see no justification
for restricting the deviation to just add/sub/mul.
Agreed, the report shouldn't be the argument.
The deviation should cover only the established idioms with a clear
meaning, and leave the rule's protection in place elsewhere. With a
Boolean operand these idioms are:
- + and - (and += / -=): "count it if the condition holds",
- * (and *=): "this value if the condition holds, else 0".
Other operators have no such idiom (at least, I'm not aware of them).
The use with * easily extends to <<. With that it's only logical to also
include >>.
With + and - covered, it feels pretty much natural that relational
operators also want covering.
Once there, and with division and modulo agreed upon to leave out, there
isn't that much else left, I think.
Jan
I agree these uses would be equally well defined.
My thought is about deviating them without a need. For these operators
there is currently nothing in Xen. Without the deviation the rule keeps
protecting new code: e.g. Boolean operand of << would be reported and
looked at, rather than silently accepted.
So I'd prefer to keep deviation limited to +, - and * (and assignment
forms). If you still think the wider scope is preferable, I'll of course
go with that in v3.
BR, Dmytro.
|