Skip to content
  1. Jun 29, 2012
  2. Jun 25, 2012
    • Jakob Stoklund Olesen's avatar
      Enforce stricter liveness rules for PHIs. · a57fc12e
      Jakob Stoklund Olesen authored
      Verify that all paths from the entry block to a virtual register read
      pass through a def. Enable this check even when MRI->isSSA() is false.
      
      Verify that the live range of a virtual register is live out of all
      predecessor blocks, even for PHI-values.
      
      This requires that PHIElimination sometimes inserts IMPLICIT_DEF
      instruction in predecessor blocks.
      
      llvm-svn: 159150
      a57fc12e
  3. Jun 23, 2012
  4. Jun 21, 2012
  5. Jun 14, 2012
  6. Jun 07, 2012
  7. Jun 02, 2012
    • Jakob Stoklund Olesen's avatar
      Switch all register list clients to the new MC*Iterator interface. · 54038d79
      Jakob Stoklund Olesen authored
      No functional change intended.
      
      Sorry for the churn. The iterator classes are supposed to help avoid
      giant commits like this one in the future. The TableGen-produced
      register lists are getting quite large, and it may be necessary to
      change the table representation.
      
      This makes it possible to do so without changing all clients (again).
      
      llvm-svn: 157854
      54038d79
  8. May 29, 2012
  9. May 17, 2012
  10. May 08, 2012
    • Jakob Stoklund Olesen's avatar
      Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass(). · 3c52f028
      Jakob Stoklund Olesen authored
      The getPointerRegClass() hook can return register classes that depend on
      the calling convention of the current function (ptr_rc_tailcall).
      
      So far, we have been able to infer the calling convention from the
      subtarget alone, but as we add support for multiple calling conventions
      per target, that no longer works.
      
      Patch by Yiannis Tsiouris!
      
      llvm-svn: 156328
      3c52f028
  11. Mar 29, 2012
    • Jakob Stoklund Olesen's avatar
      Enable machine code verification after PreSched2 passes. · d1bd8fba
      Jakob Stoklund Olesen authored
      The late scheduler depends on accurate liveness information if it is
      breaking anti-dependencies, so we should be able to verify it.
      
      Relax the terminator checking in the machine code verifier so it can
      handle the basic blocks created by if conversion.
      
      llvm-svn: 153614
      d1bd8fba
  12. Mar 28, 2012
  13. Mar 10, 2012
  14. Mar 05, 2012
  15. Feb 29, 2012
  16. Feb 28, 2012
  17. Feb 27, 2012
    • Jakob Stoklund Olesen's avatar
      Update machine code verifier. · 5aafb56d
      Jakob Stoklund Olesen authored
      After the SlotIndex slot names were updated, it is possible to apply
      stricter checks to live intervals.
      
      Also treat bundles as bags of operands when checking live intervals.
      
      llvm-svn: 151531
      5aafb56d
  18. Feb 14, 2012
  19. 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
  20. 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
  21. Nov 15, 2011
  22. Nov 14, 2011
  23. Nov 13, 2011
    • Jakob Stoklund Olesen's avatar
      Rename SlotIndexes to match how they are used. · 90b5e565
      Jakob Stoklund Olesen authored
      The old naming scheme (load/use/def/store) can be traced back to an old
      linear scan article, but the names don't match how slots are actually
      used.
      
      The load and store slots are not needed after the deferred spill code
      insertion framework was deleted.
      
      The use and def slots don't make any sense because we are using
      half-open intervals as is customary in C code, but the names suggest
      closed intervals.  In reality, these slots were used to distinguish
      early-clobber defs from normal defs.
      
      The new naming scheme also has 4 slots, but the names match how the
      slots are really used.  This is a purely mechanical renaming, but some
      of the code makes a lot more sense now.
      
      llvm-svn: 144503
      90b5e565
  24. Oct 06, 2011
    • Jakob Stoklund Olesen's avatar
      Fix sub-register operand verification. · eb38bd8c
      Jakob Stoklund Olesen authored
      PhysReg operands are not allowed to have sub-register indices at all.
      
      For virtual registers with sub-reg indices, check that all registers in
      the register class support the sub-reg index.
      
      llvm-svn: 141220
      eb38bd8c
  25. Sep 24, 2011
  26. Sep 21, 2011
    • Andrew Trick's avatar
      Lower ARM adds/subs to add/sub after adding optional CPSR operand. · 924123ac
      Andrew Trick authored
      This is still a hack until we can teach tblgen to generate the
      optional CPSR operand rather than an implicit CPSR def. But the
      strangeness is now limited to the selection DAG. ADD/SUB MI's no
      longer have implicit CPSR defs, nor do we allow flag setting variants
      of these opcodes in machine code. There are several corner cases to
      consider, and getting one wrong would previously lead to nasty
      miscompilation. It's not the first time I've debugged one, so this
      time I added enough verification to ensure it won't happen again.
      
      llvm-svn: 140228
      924123ac
  27. Sep 15, 2011
    • Jakob Stoklund Olesen's avatar
      Stop verifying hasPHIKill() flags. · 4c099551
      Jakob Stoklund Olesen authored
      There is only one legitimate use remaining, in addIntervalsForSpills().
      All other calls to hasPHIKill() are only used to update PHIKill flags.
      
      The addIntervalsForSpills() function is part of the old spilling
      framework, only used by linearscan.
      
      llvm-svn: 139783
      4c099551
  28. Jul 30, 2011
  29. Jun 28, 2011
  30. Jun 27, 2011
  31. Jun 02, 2011
  32. May 19, 2011
  33. May 05, 2011
    • Bill Wendling's avatar
      SjLj EH could produce a machine basic block that legitimately has more than one · 2a40131f
      Bill Wendling authored
      landing pad as its successor.
      
      SjLj exception handling jumps to the correct landing pad via a switch statement
      that's generated right before code-gen. Loosen the constraint in the machine
      instruction verifier to allow for this. Note, this isn't the most rigorous check
      since we cannot determine where that switch statement came from. But it's
      marginally better than turning this check off when SjLj exceptions are used.
      <rdar://problem/9187612>
      
      llvm-svn: 130881
      2a40131f
  34. Apr 06, 2011
  35. Mar 31, 2011
Loading