Skip to content
  1. Jun 28, 2010
  2. Jun 26, 2010
  3. Jun 22, 2010
  4. Jun 19, 2010
    • Bob Wilson's avatar
      Tidy. · 4581434c
      Bob Wilson authored
      llvm-svn: 106383
      4581434c
    • Evan Cheng's avatar
      Allow ARM if-converter to be run after post allocation scheduling. · 2d51c7c5
      Evan Cheng authored
      - This fixed a number of bugs in if-converter, tail merging, and post-allocation
        scheduler. If-converter now runs branch folding / tail merging first to
        maximize if-conversion opportunities.
      - Also changed the t2IT instruction slightly. It now defines the ITSTATE
        register which is read by instructions in the IT block.
      - Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't
        change the instruction ordering in the IT block (since IT mask has been
        finalized). It also ensures no other instructions can be scheduled between
        instructions in the IT block.
      
      This is not yet enabled.
      
      llvm-svn: 106344
      2d51c7c5
    • Evan Cheng's avatar
      Fix an inverted condition. · cf9e8a98
      Evan Cheng authored
      llvm-svn: 106330
      cf9e8a98
  5. Jun 18, 2010
    • Evan Cheng's avatar
      Teach iff-converter to properly count # of dups. It was not skipping over... · c0e0d85b
      Evan Cheng authored
      Teach iff-converter to properly count # of dups. It was not skipping over dbg_value's which resulted in non-duplicated instructions being deleted. rdar://8104384.
      
      llvm-svn: 106323
      c0e0d85b
    • Bob Wilson's avatar
      Fix PR7372: Conditional branches (at least on ARM) are treated as predicated, · f82c8fcc
      Bob Wilson authored
      so when IfConverter::CopyAndPredicateBlock checks to see if it should ignore
      an instruction because it is a branch, it should not check if the branch is
      predicated.
      
      This case (when IgnoreBr is true) is only relevant from IfConvertTriangle,
      where new branches are inserted after the block has been copied and predicated.
      If the original branch is not removed, we end up with multiple conditional
      branches (possibly conflicting) at the end of the block.  Aside from any
      immediate errors resulting from that, this confuses the AnalyzeBranch functions
      so that the branches are not analyzable.  That in turn causes the IfConverter to
      think that the "Simple" pattern can be applied, and things go downhill fast
      because the "Simple" pattern does _not_ apply if the block can fall through.
      
      This is pretty fragile.  If there are other degenerate cases where AnalyzeBranch
      fails, but where the block may still fall through, the IfConverter should not
      perform its "Simple" if-conversion.  But, I don't know how to do that with the
      current AnalyzeBranch interface, so for now, the best thing seems to be to
      avoid creating branches that AnalyzeBranch cannot handle.
      
      Evan, please review!
      
      llvm-svn: 106291
      f82c8fcc
    • Stuart Hastings's avatar
      Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This · 0125b641
      Stuart Hastings authored
      addresses a longstanding deficiency noted in many FIXMEs scattered
      across all the targets.
      
      This effectively moves the problem up one level, replacing eleven
      FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path
      through FastISel where we actually supply a DebugLoc, fixing Radar
      7421831.
      
      llvm-svn: 106243
      0125b641
  6. Jun 16, 2010
  7. Jun 15, 2010
  8. Jun 14, 2010
  9. Jun 07, 2010
  10. Jun 05, 2010
  11. Jan 04, 2010
    • David Greene's avatar
      · 72e47cd6
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92520
      72e47cd6
  12. Nov 21, 2009
  13. Oct 28, 2009
    • Bob Wilson's avatar
      Revert r85346 change to control tail merging by CodeGenOpt::Level. · 97b93126
      Bob Wilson authored
      I'm going to redo this using the OptimizeForSize function attribute.
      
      llvm-svn: 85426
      97b93126
    • Bob Wilson's avatar
      Record CodeGen optimization level in the BranchFolding pass so that we can · 9693f9d4
      Bob Wilson authored
      use it to control tail merging when there is a tradeoff between performance
      and code size.  When there is only 1 instruction in the common tail, we have
      been merging.  That can be good for code size but is a definite loss for
      performance.  Now we will avoid tail merging in that case when the
      optimization level is "Aggressive", i.e., "-O3".  Radar 7338114.
      
      Since the IfConversion pass invokes BranchFolding, it too needs to know
      the optimization level.  Note that I removed the RegisterPass instantiation
      for IfConversion because it required a default constructor.  If someone
      wants to keep that for some reason, we can add a default constructor with
      a hard-wired optimization level.
      
      llvm-svn: 85346
      9693f9d4
  14. Oct 25, 2009
  15. Sep 04, 2009
  16. Aug 23, 2009
  17. Aug 22, 2009
  18. Jul 25, 2009
    • Daniel Dunbar's avatar
      More migration to raw_ostream, the water has dried up around the iostream hole. · 0dd5e1ed
      Daniel Dunbar authored
       - Some clients which used DOUT have moved to DEBUG. We are deprecating the
         "magic" DOUT behavior which avoided calling printing functions when the
         statement was disabled. In addition to being unnecessary magic, it had the
         downside of leaving code in -Asserts builds, and of hiding potentially
         unnecessary computations.
      
      llvm-svn: 77019
      0dd5e1ed
  19. Jul 14, 2009
  20. Jul 12, 2009
  21. Jul 11, 2009
  22. Jun 25, 2009
  23. Jun 15, 2009
  24. May 14, 2009
    • Bob Wilson's avatar
      Revert r71744. I must not have understood this correctly, because the · 857fe4e4
      Bob Wilson authored
      assertion is failing for some tests.
      
      llvm-svn: 71779
      857fe4e4
    • Bob Wilson's avatar
      The IfConverter::MergeBlocks method appears to be used only to merge a basic · b4c93b1f
      Bob Wilson authored
      block with its unique predecessor.  Change the code to assert if that is not
      the case, instead of trying to handle situations where the block has
      multiple predecessors.
      
      llvm-svn: 71744
      b4c93b1f
    • Bob Wilson's avatar
      Revert a portion of Dan's change r71018 that I'm convinced is wrong. · 43f21dde
      Bob Wilson authored
      Dan was trying to catch the case where a basic block ends with a conditional
      branch to the fall-through block.  In this case, all the instructions have
      been moved out of FromBBI, leaving it empty.  It cannot end with a
      conditional branch.  As the existing comment indicates, it will always fall
      through to the next block.  If the block already had the next block (NBB)
      listed as a successor, the preceding loop has a check for that and does not
      remove it.  Thus, we need to check and add the successor only when it is
      not already listed.
      
      With Dan's change, the empty block often ends up with the fall-through
      successor listed twice.  This exposed the problem in pr4195, where
      CodePlacementOpt did not handle the same predecessor listed more than once.
      It is also at least partially responsible for pr4202 and probably a similar
      issue with Thumb branches being out of range.
      
      llvm-svn: 71742
      43f21dde
    • Bob Wilson's avatar
      Merge adjacent conditional. · 969bf71c
      Bob Wilson authored
      llvm-svn: 71741
      969bf71c
Loading