This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] reaching def. question


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]