--- /dev/null
+-clone_service=MC3R1.R13.6,B.UNEVALEFF
+
+-config=B.UNEVALEFF,summary="The operand of the `alignof' and `typeof' operators shall not contain any expression which has potential side effects"
+-config=B.UNEVALEFF,stmt_child_matcher=
+{"stmt(node(utrait_expr)&&operator(alignof))", expr, 0, "stmt(any())", {}},
+{"stmt(node(utrait_type)&&operator(alignof))", type, 0, "stmt(any())", {}},
+{"stmt(node(utrait_expr)&&operator(preferred_alignof))", expr, 0, "stmt(any())", {}},
+{"stmt(node(utrait_type)&&operator(preferred_alignof))", type, 0, "stmt(any())", {}},
+{"type(node(typeof_expr))", expr, 0, "stmt(any())", {}},
+{"type(node(typeof_type))", type, 0, "stmt(any())", {}}
grep -Eo "\`(Dir|Rule) [0-9]+\.[0-9]+" ${accepted_rst} \
| sed -e 's/`Rule /MC3R1.R/' -e 's/`Dir /MC3R1.D/' -e 's/.*/-enable=&/' > ${script_dir}/accepted.ecl
+
+echo "-enable=B.UNEVALEFF" >> ${script_dir}/accepted.ecl
-eval_file=adopted.ecl
-eval_file=out_of_scope.ecl
+-eval_file=B.UNEVALEFF.ecl
-eval_file=deviations.ecl
-eval_file=call_properties.ecl
-eval_file=tagging.ecl
-config=MC3R1.R13.5,reports+={disapplied,"any()"}
-doc_end
+-doc_begin="Macros alternative_v?call[0-9] use sizeof and typeof to check that the argument types match the corresponding parameter ones."
+-config=MC3R1.R13.6,reports+={deliberate,"any_area(any_loc(any_exp(macro(^alternative_vcall[0-9]$))&&file(^xen/arch/x86/include/asm/alternative\\.h*$)))"}
+-config=B.UNEVALEFF,reports+={deliberate,"any_area(any_loc(any_exp(macro(^alternative_v?call[0-9]$))&&file(^xen/arch/x86/include/asm/alterantive\\.h*$)))"}
+-doc_end
+
+-doc_begin="Anything, no matter how complicated, inside the BUILD_BUG_ON macro is subject to a compile-time evaluation without relevant side effects."
+-config=MC3R1.R13.6,reports+={safe,"any_area(any_loc(any_exp(macro(name(BUILD_BUG_ON)))))"}
+-config=B.UNEVALEFF,reports+={safe,"any_area(any_loc(any_exp(macro(name(BUILD_BUG_ON)))))"}
+-doc_end
+
#
# Series 14
#
the short-circuit evaluation strategy for logical operators.
- Project-wide deviation; tagged as `disapplied` for ECLAIR.
+ * - R13.6
+ - On x86, macros alternative_v?call[0-9] use sizeof and typeof to check
+ that the argument types match the corresponding parameter ones.
+ - Tagged as `deliberate` for ECLAIR.
+
+ * - R13.6
+ - Anything, no matter how complicated, inside the BUILD_BUG_ON macro is
+ subject to a compile-time evaluation without relevant side effects."
+ - Tagged as `safe` for ECLAIR.
+
* - R14.2
- The severe restrictions imposed by this rule on the use of 'for'
statements are not counterbalanced by the presumed facilitation of the