This is just an idea and neither a patch nor a feature request. How about adding a option that causes randomized function/block/instruction reordering?
While gcc has a pleura of option that modify code generation, only very few combinations are usually used by the vast majority of users thus successfully exploits that rely on a specific function and/or instructions sequence can be deployed again predominantly gcc compiled systems like Linux and BSD with relative ease. For non-trivial functions, this reordering can be accomplished with incurring either no or only extremely limited(< 0.5%) performance impact. An especially interesting reordering would be the parameter of functions not visible outside the compilation unit. Thomas