Skip to content
  1. Dec 04, 2012
  2. Dec 03, 2012
    • Jakob Stoklund Olesen's avatar
      Use the new getRegAllocationHints() hook from AllocationOrder. · c784a1f9
      Jakob Stoklund Olesen authored
      This simplifies the hinting code quite a bit while making the targets
      easier to write at the same time.
      
      llvm-svn: 169173
      c784a1f9
    • Pedro Artigas's avatar
      moves doInitialization and doFinalization to the Pass class and removes some... · e4348b04
      Pedro Artigas authored
      moves doInitialization and doFinalization to the Pass class and removes some unreachable code in MachineModuleInfo
      
      reviewed by Evan Cheng <evan.cheng@apple.com>
      
      llvm-svn: 169164
      e4348b04
    • Jakob Stoklund Olesen's avatar
      Add a new hook for providing register allocator hints more flexibly. · 499cac48
      Jakob Stoklund Olesen authored
      The TargetRegisterInfo::getRegAllocationHints() function is going to
      replace the existing mechanisms for providing target-dependent hints to
      the register allocator: ResolveRegAllocHint() and
      getRawAllocationOrder().
      
      The new hook is more flexible because it allows the target to provide
      multiple preferred candidate registers for each virtual register, and it
      is easier to use because targets are not required to return a reference
      to a constant array like getRawAllocationOrder().
      
      An optional VirtRegMap argument can be used to provide target-dependent
      hints that depend on the provisional assignments of other virtual
      registers.
      
      llvm-svn: 169154
      499cac48
    • Eli Bendersky's avatar
      Fix PR12942: Allow two CUs to be generated from the same source file. · b42d1466
      Eli Bendersky authored
      Thanks Eric for the review.
      
      llvm-svn: 169142
      b42d1466
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  3. Dec 02, 2012
  4. Dec 01, 2012
  5. Nov 30, 2012
    • Bill Wendling's avatar
      Replace r168930 with a more reasonable patch. · c786b312
      Bill Wendling authored
      The original patch removed a bunch of code that the SjLjEHPrepare pass placed
      into the entry block if all of the landing pads were removed during the
      CodeGenPrepare class. The more natural way of doing things is to run the CGP
      *before* we run the SjLjEHPrepare pass.
      
      Make it so!
      
      llvm-svn: 169044
      c786b312
  6. Nov 29, 2012
  7. Nov 28, 2012
    • Jakob Stoklund Olesen's avatar
      Make the LiveRegMatrix analysis available to targets. · 26c9d70d
      Jakob Stoklund Olesen authored
      No functional change, just moved header files.
      
      Targets can inject custom passes between register allocation and
      rewriting. This makes it possible to tweak the register allocation
      before rewriting, using the full global interference checking available
      from LiveRegMatrix.
      
      llvm-svn: 168806
      26c9d70d
    • Andrew Trick's avatar
      misched: Analysis that partitions the DAG into subtrees. · 48d392e8
      Andrew Trick authored
      This is a simple, cheap infrastructure for analyzing the shape of a
      DAG. It recognizes uniform DAGs that take the shape of bottom-up
      subtrees, such as the included matrix multiplication example. This is
      useful for heuristics that balance register pressure with ILP. Two
      canonical expressions of the heuristic are implemented in scheduling
      modes: -misched-ilpmin and -misched-ilpmax.
      
      llvm-svn: 168773
      48d392e8
    • Andrew Trick's avatar
      cd1c2f9f
    • Andrew Trick's avatar
      misched: better alias analysis. · 0be19363
      Andrew Trick authored
      This fixes a hole in the "cheap" alias analysis logic implemented within
      the DAG builder itself, regardless of whether proper alias analysis is
      enabled. It now handles this pattern produced by LSR+CodeGenPrepare.
      
      %sunkaddr1 = ptrtoint * %obj to i64
      %sunkaddr2 = add i64 %sunkaddr1, %lsr.iv
      %sunkaddr3 = inttoptr i64 %sunkaddr2 to i32*
      store i32 %v, i32* %sunkaddr3
      
      llvm-svn: 168768
      0be19363
    • Andrew Trick's avatar
      misched: Debug output fix. Use an always valid iterator. · cf7e6971
      Andrew Trick authored
      llvm-svn: 168767
      cf7e6971
    • Jakob Stoklund Olesen's avatar
      Move the guts of TargetInstrInfoImpl into the TargetInstrInfo class. · c351aed4
      Jakob Stoklund Olesen authored
      The *Impl class no longer serves a purpose now that the super-class
      implementation is in CodeGen.
      
      llvm-svn: 168759
      c351aed4
    • Jakob Stoklund Olesen's avatar
      Move Target{Instr,Register}Info.cpp into lib/CodeGen. · fcf14e84
      Jakob Stoklund Olesen authored
      The Target library is not allowed to depend on the large CodeGen
      library, but the TRI and TII classes provide abstract interfaces that
      require both caller and callee to link to CodeGen.
      
      The implementation files for these classes provide default
      implementations of some of the hooks. These methods may need to
      reference CodeGen, so they belong in that library.
      
      We already have a number of methods implemented in the
      TargetInstrInfoImpl sub-class because of that. I will merge that class
      into the parent next.
      
      llvm-svn: 168758
      fcf14e84
Loading