GIMPLE is a family of intermediate representations (IR) based on the tree data structure. At present, there are only two kinds of GIMPLE:
Low_level_GIMPLE is obtained by linearizing all the high-level control flow structures of high level GIMPLE, including nested functions, exception handling, and loops.
Almost all tree optimizer passes work on SSA GIMPLE, while some work on normal low level GIMPLE. It is very likely that at one point, GCC will lower low level GIMPLE even further, in order to simplify the GIMPLE to RTL expand pass.
The gcc (or cc1) argument options -fdump-tree-all -fdump-tree-ssa -fdump-tree-optimized etc... might be used to have some GIMPLE intermediate representations dumped (in a simpler textual form). In passes, your C code could call print_gimple_expr or print_gimple_stmt ...