Skip to content
  1. Aug 11, 2009
    • Dan Gohman's avatar
      Add const qualifiers. · e02f9ba9
      Dan Gohman authored
      llvm-svn: 78663
      e02f9ba9
    • Jakob Stoklund Olesen's avatar
      Rebuild RegScavenger::DistanceMap each time it is needed. · b39a5aa7
      Jakob Stoklund Olesen authored
      The register scavenger maintains a DistanceMap that maps MI pointers to their
      distance from the top of the current MBB. The DistanceMap is built
      incrementally in forward() and in bulk in findFirstUse(). It is used by
      scavengeRegister() to determine which candidate register has the longest
      unused interval.
      
      Unfortunately the DistanceMap contents can become outdated. The first time
      scavengeRegister() is called, the DistanceMap is filled to cover the MBB. If
      then instructions are inserted in the MBB (as they always are following
      scavengeRegister()), the recorded distances are too short. This causes bad
      behaviour in the included test case where a register use /after/ the current
      position is ignored because findFirstUse() thinks is is /before/ the current
      position. A "using an undefined register" assertion follows promptly.
      
      The fix is to build a fresh DistanceMap at the top of scavengeRegister(), and
      discard it after use. This means that DistanceMap is no longer needed as a
      RegScavenger member variable, and forward() doesn't need to update it.
      
      The fix then discloses issue number two in the same test case: The candidate
      search in scavengeRegister() finds a CSR that has been saved in the prologue,
      but is currently unused. It would be both inefficient and wrong to spill such
      a register in the emergency spill slot. In the present case, the emergency
      slot restore is placed immediately before the normal epilogue restore, leading
      to a "Redefining a live register" assertion.
      
      Fix number two: When scavengerRegister() stumbles upon an unused register that
      is overwritten later in the MBB, return that register early. It is important
      to verify that the register is defined later in the MBB, otherwise it might be
      an unspilled CSR.
      
      llvm-svn: 78650
      b39a5aa7
    • Daniel Dunbar's avatar
      Fix a -Asserts warning. · 0c04f2b4
      Daniel Dunbar authored
       - Since the function is never called in NDEBUG mode, just dropped the DEBUG()
         uses here.
      
      llvm-svn: 78649
      0c04f2b4
    • David Goodwin's avatar
      Replace DOUT. · f20236ac
      David Goodwin authored
      llvm-svn: 78634
      f20236ac
    • Jim Grosbach's avatar
      SjLj based exception handling unwinding support. This patch is nasty, brutish · 693e36a3
      Jim Grosbach authored
      and short. Well, it's kinda short. Definitely nasty and brutish.
      
      The front-end generates the register/unregister calls into the SjLj runtime,
      call-site indices and landing pad dispatch. The back end fills in the LSDA
      with the call-site information provided by the front end. Catch blocks are
      not yet implemented.
      
      Built on Darwin and verified no llvm-core "make check" regressions.
      
      llvm-svn: 78625
      693e36a3
    • Lang Hames's avatar
      Modified VNInfo. The "copy" member is now a union which holds the copy for a... · 3b90d973
      Lang Hames authored
      Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.
      
      llvm-svn: 78620
      3b90d973
    • Dan Gohman's avatar
      Fix a bug in the DAGCombiner's handling of multiple linked · 9d26c85b
      Dan Gohman authored
      MERGE_VALUES nodes. Replacing the result values with the
      operands in one MERGE_VALUES node may cause another
      MERGE_VALUES node be CSE'd with the first one, and bring
      its uses along, so that the first one isn't dead, as this
      code expects. Fix this by iterating until the node is
      really dead. This fixes PR4699.
      
      llvm-svn: 78619
      9d26c85b
    • Dan Gohman's avatar
      Fix a bug where DAGCombine was producing an illegal ConstantFP · 733a64db
      Dan Gohman authored
      node after legalize, and remove the workaround code from the
      ARM backend.
      
      llvm-svn: 78615
      733a64db
    • Owen Anderson's avatar
  2. Aug 10, 2009
  3. Aug 09, 2009
  4. Aug 08, 2009
  5. Aug 07, 2009
  6. Aug 06, 2009
Loading