Skip to content
  1. Jun 03, 2011
  2. Jun 02, 2011
  3. Jun 01, 2011
  4. May 31, 2011
    • Jakob Stoklund Olesen's avatar
      Simplify the eviction policy by making the failsafe explicit. · 73e18b7a
      Jakob Stoklund Olesen authored
      When assigned ranges are evicted, they are put in the RS_Evicted stage and are
      not allowed to evict anything else. That prevents looping automatically.
      
      When evicting ranges just to get a cheaper register, use only spill weights to
      find the possible candidates. Avoid breaking hints for this purpose, it is not
      worth it.
      
      Start implementing more complex eviction heuristics, guarded by the temporary
      -complex-eviction flag. The initial version permits a heavier range to be
      evicted if it doesn't have any uses where the evicting range is live. This makes
      it a good candidate for live ranfge splitting.
      
      llvm-svn: 132358
      73e18b7a
  5. May 30, 2011
  6. May 29, 2011
  7. May 28, 2011
    • Nadav Rotem's avatar
      · d86c1c41
      Nadav Rotem authored
      Refactor the type legalizer. Switch TargetLowering to a new enum - LegalizeTypeAction.
      This patch does not change the behavior of the type legalizer. The codegen
      produces the same code.
      This infrastructural change is needed in order to enable complex decisions
      for vector types (needed by the vector-select patch).
      
      llvm-svn: 132263
      d86c1c41
    • Benjamin Kramer's avatar
      Erase instructions _after_ checking their type. · e260b2b0
      Benjamin Kramer authored
      llvm-svn: 132256
      e260b2b0
    • John McCall's avatar
      Implement and document the llvm.eh.resume intrinsic, which is · 046c47e9
      John McCall authored
      transformed by the inliner into a branch to the enclosing landing pad
      (when inlined through an invoke).  If not so optimized, it is lowered
      DWARF EH preparation into a call to _Unwind_Resume (or _Unwind_SjLj_Resume
      as appropriate).  Its chief advantage is that it takes both the
      exception value and the selector value as arguments, meaning that there
      is zero effort in recovering these;  however, the frontend is required
      to pass these down, which is not actually particularly difficult.
      
      Also document the behavior of landing pads a bit better, and make it
      clearer that it's okay that personality functions don't always land at
      landing pads.  This is just a fact of life.  Don't write optimizations that
      rely on pushing things over an unwind edge.
      
      llvm-svn: 132253
      046c47e9
    • Charles Davis's avatar
      5638b9f0
    • Jakob Stoklund Olesen's avatar
      Create two BlockInfo entries when a live range is discontinuous through a block. · fd3f71ef
      Jakob Stoklund Olesen authored
      Delete the Kill and Def markers in BlockInfo. They are no longer
      necessary when BlockInfo describes a continuous live range.
      
      This only affects the relatively rare kind of basic block where a live
      range looks like this:
      
       |---x   o---|
      
      Now live range splitting can pretend that it is looking at two blocks:
      
       |---x
               o---|
      
      This allows the code to be simplified a bit.
      
      llvm-svn: 132245
      fd3f71ef
    • Jakob Stoklund Olesen's avatar
      Add SplitAnalysis::getNumLiveBlocks(). · 5cc91b26
      Jakob Stoklund Olesen authored
      It is important that this function returns the same number of live blocks as
      countLiveBlocks(CurLI) because live range splitting uses the number of live
      blocks to ensure it is making progress.
      
      This is in preparation of supporting duplicate UseBlock entries for basic blocks
      that have a virtual register live-in and live-out, but not live-though.
      
      llvm-svn: 132244
      5cc91b26
    • Devang Patel's avatar
      Select DW_AT_const_value size based on global variable size. · 8816bbc0
      Devang Patel authored
      llvm-svn: 132239
      8816bbc0
    • Rafael Espindola's avatar
      Fix the root cause of the bootstrap failure: · 836f7db2
      Rafael Espindola authored
      There was no way to check if a given register/mode pair was valid. We now return
      an error code (-2) instead of asserting. If anyone thinks that an assert
      at this point  is really needed, we can autogen a hasValidDwarfRegNum instead.
      
      llvm-svn: 132236
      836f7db2
Loading