'gcm' - stands for Global Code Motion
Global code motion pass moves computational instructions between basic blocks. The goal is to move each movable instruction to the basic block with minimal probability of execution. Probabilities are provided by a profile based on static heuristics or on run-time execution.
To preserve semantics, only instructions without side effects are considered movable. Instructions can be moved up and down the dominator tree.
Check Global code motion/global value numbering by Cliff Click for more details.
header file: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/globalcodemotion.h
implementation file: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/globalcodemotion.cpp