constant folding
don't save useless vars
merge