Skip to content
  1. Dec 20, 2011
  2. Dec 14, 2011
    • Evan Cheng's avatar
      - Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function · 7fae11b2
      Evan Cheng authored
        to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
        and use lists of the BUNDLE instruction) and a pass to unpack bundles.
      - Teach more of MachineBasic and MachineInstr methods to be bundle aware.
      - Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
        prevent IT blocks from being broken apart.
      
      llvm-svn: 146542
      7fae11b2
  3. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  4. Dec 06, 2011
  5. Nov 23, 2011
  6. Nov 22, 2011
    • Chandler Carruth's avatar
      Fix a devilish miscompile exposed by block placement. The · ee54feb6
      Chandler Carruth authored
      updateTerminator code didn't correctly handle EH terminators in one very
      specific case. AnalyzeBranch would find no terminator instruction, and
      so the fallback in updateTerminator is to assume fallthrough. This is
      correct, but the destination of the fallthrough was assumed to be the
      first successor.
      
      This is *almost always* true, but in certain cases the loop
      transformations will cause the landing pad to be the first successor!
      Instead of this brittle logic, actually look through the successors for
      a non-landing-pad accessor, and to assert if more than one is found.
      
      This will hopefully fix some (if not all) of the self host miscompiles
      with block placement. Thanks to Benjamin Kramer for reporting, Nick
      Lewycky for an initial stab at a reduction, and Duncan for endless
      advice on EH (which I know nothing about) as well as reviewing the
      actual fix.
      
      llvm-svn: 145062
      ee54feb6
  7. Oct 14, 2011
  8. Jun 28, 2011
  9. Jun 17, 2011
  10. Jun 16, 2011
  11. May 29, 2011
    • Jakob Stoklund Olesen's avatar
      Fix PR10046 by updating LiveVariables kill info when splitting live ranges. · dd6fcc4e
      Jakob Stoklund Olesen authored
      This only affects targets like Mips where branch instructions may kill virtual
      registers. Most other targets branch on flag values, so virtual registers are
      not involved.
      
      The problem is that MachineBasicBlock::updateTerminator deletes branches and
      inserts new ones while LiveVariables keeps a list of pointers to instructions
      that kill virtual registers. That list wasn't properly updated in
      MBB::SplitCriticalEdge.
      
      llvm-svn: 132298
      dd6fcc4e
  12. Apr 18, 2011
  13. Feb 04, 2011
    • Jakob Stoklund Olesen's avatar
      Add LiveIntervals::getLastSplitPoint(). · 096bd883
      Jakob Stoklund Olesen authored
      A live range cannot be split everywhere in a basic block. A split must go before
      the first terminator, and if the variable is live into a landing pad, the split
      must happen before the call that can throw.
      
      llvm-svn: 124894
      096bd883
  14. Jan 14, 2011
  15. Jan 13, 2011
  16. Jan 09, 2011
  17. Nov 02, 2010
    • Jakob Stoklund Olesen's avatar
      Don't try to split weird critical edges that really aren't: · ea263191
      Jakob Stoklund Olesen authored
      BB#1: derived from LLVM BB %bb.nph28
          Live Ins: %AL
          Predecessors according to CFG: BB#0
      	TEST8rr %reg16384<kill>, %reg16384, %EFLAGS<imp-def>; GR8:%reg16384
      	JNE_4 <BB#2>, %EFLAGS<imp-use,kill>
      	JMP_4 <BB#2>
          Successors according to CFG: BB#2 BB#2
      
      These double CFG edges only ever occur in bugpoint-generated code, so there is
      no need to attempt something clever.
      
      llvm-svn: 117992
      ea263191
  18. Oct 30, 2010
  19. Oct 26, 2010
  20. Aug 20, 2010
  21. Aug 17, 2010
  22. Jul 07, 2010
  23. Jul 06, 2010
  24. Jun 22, 2010
  25. 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
  26. Apr 13, 2010
  27. Apr 01, 2010
Loading