All architectures:
- "return" statement at function's end doesn't jump to immediately
following epilog anymore
- zero and non-zero constants are recognized in conditional
expressions of "if", "do/while" and "for" statements, no code
generated to evaluate these constant conditions and related
unnecessary jumps aren't generated anymore either
- in "for (clause-1; expr-2; expr-3) body", "expr-3" and "body" are
now reordered to the more natural code flow "body expr-3", thereby
getting rid of unnecessary jumps
MIPS code generator:
- function prologue/epilogue shortened further
- RA is not explicitly saved/restored in leaf functions
- assignment of 0 (e.g. "int a = 0;") is done from register 0
directly, avoiding a load of a constant