Skip to content
  1. Sep 12, 2012
  2. Sep 11, 2012
  3. Sep 10, 2012
  4. Sep 09, 2012
    • Benjamin Kramer's avatar
      LiveVariables: Compute a set of defs and kills to speed up updating LV during... · 851c941b
      Benjamin Kramer authored
      LiveVariables: Compute a set of defs and kills to speed up updating LV during critical edge splitting.
      
      Previously we checked if the register is def'd in a block via the def/use list a
      nd walked the list of kills to check if the register is killed in a block. Both
      of these checks can be made much cheaper by walking the block first and
      recording all defs and kills.
      
      This reduces the compile time of the test case from PR13651 from 40s to 15s at
      -O2. The compile time is still dominated by LV updating but now the main culprit
      is SparseBitVector's slowness.
      
      llvm-svn: 163478
      851c941b
  5. Sep 07, 2012
  6. Sep 06, 2012
    • Manman Ren's avatar
      Release build: guard dump functions with "ifndef NDEBUG" · 742534c4
      Manman Ren authored
      No functional change.
      
      llvm-svn: 163339
      742534c4
    • Jakob Stoklund Olesen's avatar
      Allow overlaps between virtreg and physreg live ranges. · 866908c4
      Jakob Stoklund Olesen authored
      The RegisterCoalescer understands overlapping live ranges where one
      register is defined as a copy of the other. With this change, register
      allocators using LiveRegMatrix can do the same, at least for copies
      between physical and virtual registers.
      
      When a physreg is defined by a copy from a virtreg, allow those live
      ranges to overlap:
      
        %CL<def> = COPY %vreg11:sub_8bit; GR32_ABCD:%vreg11
        %vreg13<def,tied1> = SAR32rCL %vreg13<tied0>, %CL<imp-use,kill>
      
      We can assign %vreg11 to %ECX, overlapping the live range of %CL.
      
      llvm-svn: 163336
      866908c4
    • Jakob Stoklund Olesen's avatar
      Handle overlapping regunit intervals in LiveIntervals::addKillFlags(). · bb4bdd89
      Jakob Stoklund Olesen authored
      We will soon allow virtual register live ranges to overlap regunit live
      ranges when the physreg is defined as a copy of the virtreg:
      
        %EAX = COPY %vreg5
        FOO %vreg5
        BAR %EAX<kill>
      
      There is no real interference since %vreg5 and %EAX have the same value
      where they overlap.
      
      This patch prevents addKillFlags from adding virtreg kill flags to FOO
      where the assigned physreg is overlapping the virtual register live
      range.
      
      llvm-svn: 163335
      bb4bdd89
Loading