This change is functional invariant, and has been checked with gcc for object file in-variance. For the details see the "rewrite-sw" branch