[MERGED] SSA conversion, the classical way

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I've just merged my SSA branch which replaces the SSA conversion by
one using the 'classical' way (via the iterated dominance frontier)
which was waiting since March.

This rewrite of the SSA conversion solves two main problems:
1) the phi-nodes was not always placed wheer their corresponding
   paths joined
2) the way undefined var were handled created self-defined
   pseudos or chains of self-defined pseudos (now they are
   tracked as PSEUDO_UNDEF).

This is a big step toward correct SSA but more is still needed:
- Fix/rewrite simplify_loads() which suffers from the same problems
  as the main conversion. Ideally, it should reuse the new code.
  Some work is already done in this direction but the context is
  quite different, more concerned about pointers than with 'simple'
  variables, and needs more work.
- SSA is broken, probably in several ways, during BB simplification.
- Some incorrect phi-nodes may be created during linearization
  (when some branches are inactive/never reachable).

Also:
- a lot of places can make good use of the dominance tree.
- UNDEFs must be handled:
  * issue warning for unintilized vars
  * offer an option to initialize them to 0
- some optimizations are possible on the new SSA conversion (but
  the performance is equivalent or slightly better than it was).

-- Luc
 



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux