Skip to main content

IAR Embedded Workbench for RISC-V 3.40

RED-cond-always

In this section:
Synopsis

The condition in an if, for, while, do-while, or ternary operator will always be true.

Enabled by default

No

Severity/Certainty

Medium/Medium

mediummedium.png
Full description

The condition in an if, for, while, do-while, or ternary operator will always be true. This might indicate a logical error that could result in unexpected runtime behavior. This check is identical to MISRAC2012-Rule-14.3_a, MISRAC++2008-0-1-2_a, MISRAC++2023-0.0.2_a.

Coding standards
CERT EXP17-C

Do not perform bitwise operations in conditional expressions

CWE 571

Expression is Always True

MISRA C:2012 Rule-14.3

(Required) Controlling expressions shall not be invariant

MISRA C++ 2008 0-1-2

(Required) A project shall not contain infeasible paths.

MISRA C++ 2023 0.0.2

(Advisory) Controlling expressions should not be invariant

Code examples

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

void example(void) {

    int x = 5;

    for (x = 0; x < 6 && 1; x--) {
    }
}

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

void example(void) {

    int x = 5;

    for (x = 0; x < 6 && 1; x++) {
    }
}