[tree-ssa] reaching def. question

Chris Lattner sabre@nondot.org
Wed Mar 17 17:05:00 GMT 2004


Diego Novillo wrote:
> I had originally implemented an SSA form that did not need an out-of-ssa
> pass.  You could just drop the SSA_NAME wrappers because no overlapping
> live ranges would occur.  Other compilers (IBM's and SGI's) do the same,
> but to date I have not found a convincing explanation favouring one
> design over the other.

At least in the case of SGI, I understood that they implemented it that
way for two reasons: 1. avoid an increase in register pressure, and 2.
work better with the legacy compiler optimizations they already had.

#2 certainly makes a lot of sense, and this decision also made their
implementation of (e.g.) SSAPRE simpler, but I have a hard time buying
argument #1.

For the record, LLVM allows arbitrary overlapping of virtual registers.
We don't even have "versions" or an "out of SSA renamer".  In my
*extremely biased* opinion, this makes it a lot easier to reason about
what code does, e.g., making it trivial to answer Devang's original
question.

-Chris

-- 
http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/



More information about the Gcc mailing list