How about we take one of tsutsui@'s earlier suggestions and compile the code in question with -fno-strict-aliasing, and revert to the original code, until someone can go over the whole thing to clean up the strict-aliasing violations? That way, the bad code will work as originally intended and will be marked (by -fno-strict-aliasing and a big XXX in the relevant makefile) for future developers, at least.
As is, there are obviously violations, but we have papered over them enough that GCC isn't smart enough to warn about them: the void * cast through abcksum and the union of pointers (as opposed to pointer to union) for bbsec in mkbootblock. So the violations will lurk there until someone is bitten by them and wastes a week tracking them down like happened with the circleq macros.