Skip to content
  1. Aug 05, 2011
    • Chandler Carruth's avatar
      Temporarily revert r135528 which distinguishes between two copies of one · 81b7e11c
      Chandler Carruth authored
      inlined variable, based on the discussion in PR10542.
      
      This explodes the runtime of several passes down the pipeline due to
      a large number of "copies" remaining live across a large function. This
      only shows up with both debug and opt, but when it does it creates
      a many-minute compile when self-hosting LLVM+Clang. There are several
      other cases that show these types of regressions.
      
      All of this is tracked in PR10542, and progress is being made on fixing
      the issue. Once its addressed, the re-instated, but until then this
      restores the performance for self-hosting and other opt+debug builds.
      
      Devang, let me know if this causes any trouble, or impedes fixing it in
      any way, and thanks for working on this!
      
      llvm-svn: 136953
      81b7e11c
  2. Aug 04, 2011
  3. Aug 03, 2011
  4. Aug 02, 2011
    • Jakob Stoklund Olesen's avatar
      Extend the SpillPlacement interface with two new features. · d2a7d1ed
      Jakob Stoklund Olesen authored
      The PrefBoth constraint is used for blocks that ideally want a live-in
      value both on the stack and in a register. This would be used by a block
      that has a use before interference forces a spill.
      
      Secondly, add the ChangesValue flag to BlockConstraint. This tells
      SpillPlacement if a live-in value on the stack can be reused as a
      live-out stack value for free. If the block redefines the virtual
      register, a spill would be required for that.
      
      This extra information will be used by SpillPlacement to more accurately
      calculate spill costs when a value can exist both on the stack and in a
      register.
      
      The simplest example is a basic block that reads the virtual register,
      but doesn't change its value. Spilling around such a block requires a
      reload, but no spill in the block.
      
      The spiller already knows this, but the spill placer doesn't. That can
      sometimes lead to suboptimal regions.
      
      llvm-svn: 136731
      d2a7d1ed
    • Eli Friedman's avatar
      Don't create a ridiculous EXTRACT_ELEMENT. PR10563. · 04c5025c
      Eli Friedman authored
      The testcase looks extremely fragile, so I'm adding an assertion which should catch any cases like this.
      
      llvm-svn: 136711
      04c5025c
  5. Aug 01, 2011
  6. Jul 31, 2011
  7. Jul 30, 2011
  8. Jul 29, 2011
Loading