Skip to main content

IAR Embedded Workbench for RL78 5.20

MISRAC++2008-5-0-1_b

In this section:
Synopsis

(Required) The value of an expression shall be the same under any order of evaluation that the standard permits.

Enabled by default

Yes

Severity/Certainty

Medium/High

mediumhigh.png
Full description

There are more than one read access with volatile-qualified type within a single sequence point. This check is identical to SPC-volatile-reads, MISRAC2004-12.2_b, MISRAC2012-Rule-13.2_b.

Coding standards
CERT EXP10-C

Do not depend on the order of evaluation of subexpressions or the order in which side effects take place

CERT EXP30-C

Do not depend on order of evaluation between sequence points

CWE 696

Incorrect Behavior Order

MISRA C:2004 12.2

(Required) The value of an expression shall be the same under any order of evaluation that the standard permits.

MISRA C:2012 Rule-13.2

(Required) The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders

Code examples

The following code example fails the check and will give a warning:

void example(void) {
  int x;
  volatile int v;
  x = v + v;
}

The following code example passes the check and will not give a warning about this issue:

int main(void) {
  volatile int i = 0;
  int x = i;  
  i++;
  x = x * i;  //OK - statement is broken up  
  return 0;
}