Skip to content
  • Chris Lattner's avatar
    * Add a new commandline argument to control the "global roots hack". Default · 54a52e53
    Chris Lattner authored
      it to be off.  If it looks like it's completely unnecessary after testing, I
      will remove it completely (which is the hope).
    * Callers of the DSNode "copy ctor" can not choose to not copy links.
    * Make node collapsing not create a garbage node in some cases, avoiding a
      memory allocation, and a subsequent DNE.
    * When merging types, allow two functions of different types to be merged
      without collapsing.
    * Use DSNodeHandle::isNull more often instead of DSNodeHandle::getNode() == 0,
      as it is much more efficient.
    *** Implement the new, more efficient reachability cloner class
        In addition to only cloning nodes that are reachable from interesting
        roots, this also fixes the huge inefficiency we had where we cloned lots
        of nodes, only to merge them away immediately after they were cloned.
        Now we only actually allocate a node if there isn't one to merge it into.
    * Eliminate the now-obsolete cloneReachable* and clonePartiallyInto methods
    * Rewrite updateFromGlobalsGraph to use the reachability cloner
    * Rewrite mergeInGraph to use the reachability cloner
    * Disable the scalar map scanning code in removeTriviallyDeadNodes.  In large
      SCC's, this is extremely expensive.  We need a better data structure for the
      scalar map, because we really want to scan the unique node handles, not ALL
      of the scalars.
    * Remove the incorrect SANER_CODE_FOR_CHECKING_IF_ALL_REFERRERS_ARE_FROM_SCALARMAP code.
    * Move the code for eliminating integer nodes from the trivially dead
      eliminator to the dead node eliminator.
    * removeDeadNodes no longer uses removeTriviallyDeadNodes, as it contains a
      superset of the node removal power.
    * Only futz around with the globals graph in removeDeadNodes if it is modified
    
    llvm-svn: 10987
    54a52e53
Loading