GIMPLE was a binary internal format that is difficult to completely reset and load correctly. Compared to LLVM, LLVM IR was designed to be awkward and reloaded into a regular file (the text and binary format of such files are fully convertible from one to another). You can run Clang to emit LLVMIR, and then run opt with some optimizations and then with others, and there will be files between the phases of the LBVM IR bitcode. And then you can start coding from the IR bit code to your own code (even theoretically, in the wrong platform, see PNaCl Project).
There are several projects to reset / reload the internal GCC view. I know that such a project was created to integrate gcc with a commercial compiler tool. An author cannot simply associate commercial code with gcc because gcc is VIRAL (it will infect any associated code with anti-commercial GPLs). Thus, the author wrote the GPL dumper / loader GIMPLE in some external (xml) format; the proprietary tool was able to read and translate this XML into another XML of the same format, and then was reloaded with the GPL tool.
In the new version of gcc, you have the opportunity to write a plugin that is VIRAL (23.2.1) in terms of the GPL. The plugin will work with representing the program in memory and there will be no problems loading / reloading GIMPLE via an external file. There are some plugins that can be configured / can be used by a user-supplied program, for example, MELT (Lisp) and GCC Python (Python). Some list of gcc plugins is
source share