return false;
long val = fold_constant(condition);
- if (val != 0)
- return is_constant_expression(expression->conditional.true_expression);
- else
+ if (val != 0) {
+ expression_t const *const t = expression->conditional.true_expression;
+ return t == NULL || is_constant_expression(t);
+ } else {
return is_constant_expression(expression->conditional.false_expression);
+ }
}
case EXPR_INVALID:
/* Generate the warning if either the left or right hand side of a
* conditional expression has no effect */
case EXPR_CONDITIONAL: {
- const conditional_expression_t *const cond = &expr->conditional;
+ conditional_expression_t const *const cond = &expr->conditional;
+ expression_t const *const t = cond->true_expression;
return
- expression_has_effect(cond->true_expression) &&
+ (t == NULL || expression_has_effect(t)) &&
expression_has_effect(cond->false_expression);
}