automation/eclair: deviate R2.6 for the x86 emulator
PATCH v3 1/1 automation/eclair: deviate R2.6 for the x86 emulator
MISRA C:2012 Rule 2.6 (advisory) states that "a function should not contain unused label declarations".
Depending on which parts of the x86 emulator are compiled in, some of its labels end up with no goto targeting them. For example, with CONFIG_HVM=n private.h defines X86EMUL_NO_FPU, X86EMUL_NO_MMX andX86EMUL_NO_SIMD: the CASE_SIMD_* macros then expand to plain labels instead of case labels, and the gotos to several hand-written simd_* labels are preprocessed out, leaving 91 unused labels in x86_emulate.c. The build already acknowledges this by passing -Wno-unused-label for that object.
Annotating these labels would only add churn to the emulator. As done for Rule 16.2, deviate the rule for the emulator as a whole.
---
v3:
- Drop the CONFIG_HVM=n specifics from the deviation text, as the deviation itself isn't limited to that configuration.
v2:
- Drop the __maybe_unused annotations (v1 patch 1) and the CASE_SIMD_* specific deviation (v1 patch 2) in favour of an emulator-wide deviation, following the existing one for Rule 16.2.
- Trim the Cc list.
automation/eclair_analysis/ECLAIR/deviations.ecl | 5 +++++ docs/misra/deviations.rst | 8 ++++++++ 2 files changed, 13 insertions(+)
automation/eclair_analysis/ECLAIR/deviations.ecl +5 -0
@@ -55,6 +55,11 @@ removed by the compiler, the resulting slowdown is negligible." -config=MC3A2.R2.6,reports+={deliberate, "any_area(text(^.*__maybe_unused.*$))"} -doc_end +-doc_begin="Depending on which parts of the x86 emulator are compiled in, some of its labels, many of them generated by the CASE_SIMD_* macros, may end up with no goto targeting them. +Annotating them would only add churn to the emulator, therefore it is deemed better to leave such files as is." +-config=MC3A2.R2.6,reports+={deliberate, "any_area(any_loc(file(^xen/arch/x86/x86_emulate/.*$)))"} +-doc_end + # # Series 3. #
docs/misra/deviations.rst +8 -0
@@ -116,6 +116,14 @@ Deviations related to MISRA C:2012 Rules: such labels poses no risks. - Tagged as `deliberate` for ECLAIR. + * - R2.6 + - Depending on which parts of the x86 emulator are compiled in, some of + its labels, many of them generated by the CASE_SIMD_* macros, may end + up with no goto targeting them. Annotating them would only add churn + to the emulator, therefore it is deemed better to leave such files as + is. + - Tagged as `deliberate` for ECLAIR. + * - R3.1 - Comments starting with '/\*' and containing URLs are safe as they are not instances of commented-out code.
Signature · 1 line
2.34.1
Quoted 12 lines · Shuaidong Chen
MISRA C:2012 Rule 2.6 (advisory) states that "a function should not contain unused label declarations".
Depending on which parts of the x86 emulator are compiled in, some of its labels end up with no goto targeting them. For example, with
CONFIG_HVM=nprivate.hdefinesX86EMUL_NO_FPU,X86EMUL_NO_MMXandX86EMUL_NO_SIMD: the CASE_SIMD_* macros then expand to plain labels instead of case labels, and the gotos to several hand-written simd_* labels are preprocessed out, leaving 91 unused labels inx86_emulate.c. The build already acknowledges this by passing -Wno-unused-label for that object.
Quoted 4 lines
Annotating these labels would only add churn to the emulator. As done for Rule 16.2, deviate the rule for the emulator as a whole.
Signed-off-by Shuaidong Chen <[email protected]>
As on a few earlier occasions, the constraint on the ack can be dropped if/when Nicola or somebody else have confirmed / acked the .ecl change.
Jan