Skip to content
Snippets Groups Projects
  1. Oct 25, 2011
  2. Aug 05, 2011
    • Jakob Stoklund Olesen's avatar
      Fix liveness computations in BranchFolding. · d633abeb
      Jakob Stoklund Olesen authored
      The old code would look at kills and defs in one pass over the
      instruction operands, causing problems with this code:
      
        %R0<def>, %CPSR<def,dead> = tLSLri %R5<kill>, 2, pred:14, pred:%noreg
        %R0<def>, %CPSR<def,dead> = tADDrr %R4<kill>, %R0<kill>, pred:14, %pred:%noreg
      
      The last instruction kills and redefines %R0, so it is still live after
      the instruction.
      
      This caused a register scavenger crash when compiling 483.xalancbmk for
      armv6. I am not including a test case because it requires too much bad
      luck to expose this old bug.
      
      First you need to convince the register allocator to use %R0 twice on
      the tADDrr instruction, then you have to convince BranchFolding to do
      something that causes it to run the register scavenger on he bad block.
      
      <rdar://problem/9898200>
      
      llvm-svn: 136973
      d633abeb
  3. Jul 07, 2011
    • Eli Friedman's avatar
      When tail-merging multiple blocks, make sure to correctly update the live-in... · bf007364
      Eli Friedman authored
      When tail-merging multiple blocks, make sure to correctly update the live-in list on the merged block to correctly account for the live-outs of all the predecessors.  They might not be the same in all cases (the testcase I have involves a PHI node where one of the operands is an IMPLICIT_DEF).
      
      Unfortunately, the testcase I have is large and confidential, so I don't have a test to commit at the moment; I'll see if I can come up with something smaller where this issue reproduces.
      
      <rdar://problem/9716278>
      
      llvm-svn: 134565
      bf007364
  4. Jun 28, 2011
  5. Jun 14, 2011
  6. May 26, 2011
  7. May 13, 2011
  8. May 12, 2011
  9. May 11, 2011
  10. Apr 22, 2011
    • Bill Wendling's avatar
      Branch folding is folding a landing pad into a regular BB. · c14d7322
      Bill Wendling authored
      An exception is thrown via a call to _cxa_throw, which we don't expect to
      return. Therefore, the "true" part of the invoke goes to a BB that has
      'unreachable' as its only instruction. This is lowered into an empty MachineBB.
      The landing pad for this invoke, however, is directly after the "true" MBB.
      When the empty MBB is removed, the landing pad is directly below the BB with the
      invoke call. The unconditional branch is removed and then the two blocks are
      merged together.
      
      The testcase is too big for a regression test.
      <rdar://problem/9305728>
      
      llvm-svn: 129965
      c14d7322
  11. Feb 22, 2011
  12. Aug 06, 2010
  13. Jun 22, 2010
  14. Jun 19, 2010
    • 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
  15. Jun 18, 2010
    • 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
  16. May 03, 2010
    • Dan Gohman's avatar
      Fix a bug which prevented tail merging of return instructions in · 2ad68de4
      Dan Gohman authored
      beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
      test/CodeGen/ARM/ifcvt2.ll for details.
      
      The fix is to change HashEndOfMBB to hash at most one instruction,
      instead of trying to apply heuristics about when it will be profitable to
      consider more than one instruction. The regular tail-merging heuristics
      are already prepared to handle the same cases, and they're more precise.
      
      Also, make test/CodeGen/ARM/ifcvt5.ll and
      test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
      continue to test what they're intended to test.
      
      And, this eliminates the problem in
      test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
      PR5204. Update it accordingly.
      
      llvm-svn: 102907
      2ad68de4
  17. Apr 02, 2010
  18. Mar 19, 2010
    • Bob Wilson's avatar
      Stop trying to merge identical jump tables. This had been inadvertently · bc5af98f
      Bob Wilson authored
      disabled for several months (since svn r88806) and no one noticed.  My fix
      for pr6543 yesterday reenabled it, but broke the ARM port's code for using
      TBB/TBH.  Rather than adding a target hook to disable merging for Thumb2 only,
      I'm just taking this out.  It is not common to have identical jump tables,
      the code we used to merge them was O(N^2), and it only helps code size, not
      performance.
      
      llvm-svn: 98977
      bc5af98f
  19. Mar 17, 2010
  20. Mar 14, 2010
  21. Mar 10, 2010
  22. Mar 08, 2010
  23. Mar 05, 2010
  24. Feb 09, 2010
  25. Jan 26, 2010
    • Chris Lattner's avatar
      Rearrange handling of jump tables. Highlights: · b6db2c6b
      Chris Lattner authored
      1. MachineJumpTableInfo is now created lazily for a function the first time
         it actually makes a jump table instead of for every function.
      2. The encoding of jump table entries is now described by the
         MachineJumpTableInfo::JTEntryKind enum.  This enum is determined by the
         TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
         throughout the compiler that "knows" that jump table entries are always
         32-bits in pic mode (for example).
      3. The size and alignment of jump table entries is now calculated based on
         their kind, instead of at machinefunction creation time.
      
      Future work includes using the EntryKind in more places in the compiler,
      eliminating other logic that "knows" the layout of jump tables in various
      situations.
      
      llvm-svn: 94470
      b6db2c6b
  26. Dec 24, 2009
    • David Greene's avatar
      · d60abbf7
      David Greene authored
      Change errs() to dbgs().
      
      llvm-svn: 92097
      d60abbf7
  27. Dec 16, 2009
Loading