Clean up assignment/<>/^^ code
Add basic common subexpression elimination

This reduces node count and speeds up C++ compilation substantially.