Obviously any sensible compiler just optimizes away, but I don't think the standard demands such optimization. It just says the expression is evaluated:
The expression in an expression statement is evaluated as a void expression for its side effects.
The semantic descriptions in this International Standard describe the behavior of an abstract machine in which issues of optimization are irrelevant.
I think the problem is that the CIL AST has no construct that corresponds to this. It's only Cabs which as A.COMPUTATION.
This is an even simpler version of #140.
CIL removes side-effect-less standalone expressions completely, but this makes Goblint unsound as it misses a race. For example in
Obviously any sensible compiler just optimizes away, but I don't think the standard demands such optimization. It just says the expression is evaluated:
I think the problem is that the CIL AST has no construct that corresponds to this. It's only Cabs which as
A.COMPUTATION
.