Skip to content
  1. Apr 19, 2013
  2. Apr 17, 2013
  3. Apr 15, 2013
  4. Apr 14, 2013
  5. Apr 13, 2013
  6. Apr 12, 2013
  7. Apr 11, 2013
    • Benjamin Kramer's avatar
      Add braces around || in && to pacify GCC. · e7c45bc6
      Benjamin Kramer authored
      llvm-svn: 179275
      e7c45bc6
    • Hal Finkel's avatar
      Manually remove successors in if conversion when CopyAndPredicateBlock is used · 95081bff
      Hal Finkel authored
      In the simple and triangle if-conversion cases, when CopyAndPredicateBlock is
      used because the to-be-predicated block has other predecessors, we need to
      explicitly remove the old copied block from the successors list. Normally if
      conversion relies on TII->AnalyzeBranch combined with BB->CorrectExtraCFGEdges
      to cleanup the successors list, but if the predicated block contained an
      un-analyzable branch (such as a now-predicated return), then this will fail.
      
      These extra successors were causing a problem on PPC because it was causing
      later passes (such as PPCEarlyReturm) to leave dead return-only basic blocks in
      the code.
      
      llvm-svn: 179227
      95081bff
  8. Apr 10, 2013
    • Andrew Trick's avatar
      Generalize the PassConfig API and remove addFinalizeRegAlloc(). · e220323c
      Andrew Trick authored
      The target hooks are getting out of hand. What does it mean to run
      before or after regalloc anyway? Allowing either Pass* or AnalysisID
      pass identification should make it much easier for targets to use the
      substitutePass and insertPass APIs, and create less need for badly
      named target hooks.
      
      llvm-svn: 179140
      e220323c
  9. Apr 09, 2013
  10. Apr 07, 2013
  11. Apr 06, 2013
    • Nadav Rotem's avatar
      typo · c4bd84c1
      Nadav Rotem authored
      llvm-svn: 178949
      c4bd84c1
    • Manman Ren's avatar
      Dwarf: use utostr on CUID to append to SmallString. · 5b22f9fe
      Manman Ren authored
      We used to do "SmallString += CUID", which is incorrect, since CUID will
      be truncated to a char.
      
      rdar://problem/13573833
      
      llvm-svn: 178941
      5b22f9fe
    • Hal Finkel's avatar
      Reapply r178845 with fix - Fix bug in PEI's virtual-register scavenging · 3005c299
      Hal Finkel authored
      This fixes PEI as previously described, but correctly handles the case where
      the instruction defining the virtual register to be scavenged is the first in
      the block. Arnold provided me with a bugpoint-reduced test case, but even that
      seems too large to use as a regression test. If I'm successful in cleaning it
      up then I'll commit that as well.
      
      Original commit message:
      
          This change fixes a bug that I introduced in r178058. After a register is
          scavenged using one of the available spills slots the instruction defining the
          virtual register needs to be moved to after the spill code. The scavenger has
          already processed the defining instruction so that registers killed by that
          instruction are available for definition in that same instruction. Unfortunately,
          after this, the scavenger needs to iterate through the spill code and then
          visit, again, the instruction that defines the now-scavenged register. In order
          to avoid confusion, the register scavenger needs the ability to 'back up'
          through the spill code so that it can again process the instructions in the
          appropriate order. Prior to this fix, once the scavenger reached the
          just-moved instruction, it would assert if it killed any registers because,
          having already processed the instruction, it believed they were undefined.
      
          Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
          for diagnosing the problem and testing this fix.
      
      llvm-svn: 178919
      3005c299
  12. Apr 05, 2013
    • Bill Wendling's avatar
      Use the target options specified on a function to reset the back-end. · eb108bad
      Bill Wendling authored
      During LTO, the target options on functions within the same Module may
      change. This would necessitate resetting some of the back-end. Do this for X86,
      because it's a Friday afternoon.
      
      llvm-svn: 178917
      eb108bad
    • Hal Finkel's avatar
      Revert r178845 - Fix bug in PEI's virtual-register scavenging · 81c46d08
      Hal Finkel authored
      Reverting because this breaks one of the LTO builders. Original commit message:
      
          This change fixes a bug that I introduced in r178058. After a register is
          scavenged using one of the available spills slots the instruction defining the
          virtual register needs to be moved to after the spill code. The scavenger has
          already processed the defining instruction so that registers killed by that
          instruction are available for definition in that same instruction. Unfortunately,
          after this, the scavenger needs to iterate through the spill code and then
          visit, again, the instruction that defines the now-scavenged register. In order
          to avoid confusion, the register scavenger needs the ability to 'back up'
          through the spill code so that it can again process the instructions in the
          appropriate order. Prior to this fix, once the scavenger reached the
          just-moved instruction, it would assert if it killed any registers because,
          having already processed the instruction, it believed they were undefined.
      
          Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
          for diagnosing the problem and testing this fix.
      
      llvm-svn: 178916
      81c46d08
    • Hal Finkel's avatar
      Fix bug in PEI's virtual-register scavenging · e6f48e4e
      Hal Finkel authored
      This change fixes a bug that I introduced in r178058. After a register is
      scavenged using one of the available spills slots the instruction defining the
      virtual register needs to be moved to after the spill code. The scavenger has
      already processed the defining instruction so that registers killed by that
      instruction are available for definition in that same instruction. Unfortunately,
      after this, the scavenger needs to iterate through the spill code and then
      visit, again, the instruction that defines the now-scavenged register. In order
      to avoid confusion, the register scavenger needs the ability to 'back up'
      through the spill code so that it can again process the instructions in the
      appropriate order. Prior to this fix, once the scavenger reached the
      just-moved instruction, it would assert if it killed any registers because,
      having already processed the instruction, it believed they were undefined.
      
      Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
      for diagnosing the problem and testing this fix.
      
      llvm-svn: 178845
      e6f48e4e
    • Andrew Trick's avatar
      RegisterPressure heuristics currently require signed comparisons. · 80e66ce0
      Andrew Trick authored
      llvm-svn: 178823
      80e66ce0
    • Andrew Trick's avatar
      Disable DFSResult for ConvergingScheduler. · 96ce3848
      Andrew Trick authored
      For now, just save the compile time since the ConvergingScheduler
      heuristics don't use this analysis. We'll probably enable it later
      after compile-time investigation.
      
      llvm-svn: 178822
      96ce3848
    • Andrew Trick's avatar
      MachineScheduler: format DEBUG output. · 419d4917
      Andrew Trick authored
      I'm getting more serious about tuning and enabling on x86/ARM. Start
      by making the trace readable.
      
      llvm-svn: 178821
      419d4917
    • Arnold Schwaighofer's avatar
      CostModel: Add parameter to instruction cost to further classify operand values · b9773871
      Arnold Schwaighofer authored
      On certain architectures we can support efficient vectorized version of
      instructions if the operand value is uniform (splat) or a constant scalar.
      An example of this is a vector shift on x86.
      
      We can efficiently support
      
      for (i = 0 ; i < ; i += 4)
        w[0:3] = v[0:3] << <2, 2, 2, 2>
      
      but not
      
      for (i = 0; i < ; i += 4)
        w[0:3] = v[0:3] << x[0:3]
      
      This patch adds a parameter to getArithmeticInstrCost to further qualify operand
      values as uniform or uniform constant.
      
      Targets can then choose to return a different cost for instructions with such
      operand values.
      
      A follow-up commit will test this feature on x86.
      
      radar://13576547
      
      llvm-svn: 178807
      b9773871
    • Manman Ren's avatar
      Debug Info: revert 178722 for now. · bdcb4464
      Manman Ren authored
      There is a difference for FORM_ref_addr between DWARF 2 and DWARF 3+.
      Since Eric is against guarding DWARF 2 ref_addr with DarwinGDBCompat, we are
      still in discussion on how to handle this.
      
      The correct solution is to update our header to say version 4 instead of version
      2 and update tool chains as well.
      
      rdar://problem/13559431
      
      llvm-svn: 178806
      bdcb4464
    • Adrian Prantl's avatar
      typo · 322f41d0
      Adrian Prantl authored
      llvm-svn: 178804
      322f41d0
  13. Apr 04, 2013
  14. Apr 03, 2013
  15. Apr 02, 2013
Loading