A: 

You should be aware that GCC no longer uses the SSA described in those papers (Chow's HSSA). Rather it uses an "alias oracle" to disambiguate between memory addresses. It still uses SSA for scalar variables.

Resources:

  • I'm surprised you missed: "A propagation engine for GCC", which described the general framework for SCCP and other sparse conditional analyses used in GCC.
  • Lenart and Sadler extend SCCP to type inference.
  • Patterson extends SCCP to value-range propagation (and also allows copy propagation). I'm pretty sure this is the algorithm GCC uses.
  • Finally, if I may be so bold as to suggest my own short paper, which discusses the algorithm, and tries to extend symbolic execution (the core of SCCP) to building SSA as well.
Paul Biggar