Much of my research into region based memory management has been accomplished via gcc plugins. In such a means of implementation, one does not need to do full-up re-compiles of the gcc compiler or even a small stage-1 gcc compile. Instead, the plugins provide a wealth of the gcc API and are implemented as shared objects. In other words, if you wanna test a compiler optimization pass, or do some static analysis, cough-up a plugin, compile that bad-boy, and tell gcc to run 'er via the '-fplugin=' command line argument.
Of course, one can use the force for good or evil. I prefer to ere towards a phrase I have leaned about: "research purposes." Such a lovely phrase conveys an innocent meaning of that if something doesn't work, it's not the creators fault. It is a lot Like saying: "hey... this plugin might not have been proven correct." In other words, if my plugin posts your ssh private key to pastebin... oops. Muhahahahahhaha