Skip to content
  1. Oct 15, 2013
  2. Oct 14, 2013
    • Eric Christopher's avatar
      Revert part of a fix from 2010, changes since then: · 74002574
      Eric Christopher authored
      a) x86-64 TLS has been documented
      b) the code path should use movq for the correct relocation
         to be generated.
      
      I've also added a fixme for the test case that we should improve
      the code generated, it should look something like is documented
      in the tls abi document.
      
      llvm-svn: 192631
      74002574
    • Eric Christopher's avatar
      Reformat this routine slightly. · 755711e5
      Eric Christopher authored
      llvm-svn: 192630
      755711e5
    • Eric Christopher's avatar
      Remove some extraneous whitespace. · 584d71c6
      Eric Christopher authored
      llvm-svn: 192629
      584d71c6
    • Andrew Trick's avatar
      LiveRegUnits::removeRegsInMask safety. · 3f4d6c65
      Andrew Trick authored
      Clobbering is exclusive not inclusive on register units.
      For liveness, we need to consider all the preserved registers.
      e.g. A regmask that clobbers YMM0 may preserve XMM0.
      Units are only clobbered when all super-registers are clobbered.
      
      llvm-svn: 192623
      3f4d6c65
    • Andrew Trick's avatar
      Use a SparseSet in LiveRegUnits. · 276dd453
      Andrew Trick authored
      Some clients may add block live ins and may track liveness over a
      large scope. This guarantees an efficient implementation in all cases
      with no memory allocation/deallocation, independent of the number of
      target registers. It could be slightly less convenient but is fine in
      the expected case.
      
      llvm-svn: 192622
      276dd453
    • Andrew Trick's avatar
      Move LiveRegUnits implementation into .cpp. Comment and format. · 0aed0cfc
      Andrew Trick authored
      llvm-svn: 192621
      0aed0cfc
    • Andrew Trick's avatar
      ff3585c5
    • Manman Ren's avatar
      Debug Info: static member DIE creation. · c6b63927
      Manman Ren authored
      Clean up creation of static member DIEs. We can create static member DIEs from
      two places, so we call getOrCreateStaticMemberDIE from the two places.
      
      getOrCreateStaticMemberDIE will get or create the context DIE first, then it
      will check if the DIE already exists, if not, we create the static member DIE
      and add it to the context.
      
      Creation of static member DIEs are handled in a similar way as subprogram DIEs.
      
      llvm-svn: 192618
      c6b63927
    • David Blaikie's avatar
      Fix indenting. · 6004dbc9
      David Blaikie authored
      That wasn't confusing /at all/...
      
      llvm-svn: 192617
      6004dbc9
    • Will Dietz's avatar
      MachineSink: Fix and tweak critical-edge breaking heuristic. · 5cb7f4e3
      Will Dietz authored
      Per original comment, the intention of this loop
      is to go ahead and break the critical edge
      (in order to sink this instruction) if there's
      reason to believe doing so might "unblock" the
      sinking of additional instructions that define
      registers used by this one.  The idea is that if
      we have a few instructions to sink "together"
      breaking the edge might be worthwhile.
      
      This commit makes a few small changes
      to help better realize this goal:
      
      First, modify the loop to ignore registers
      defined by this instruction.  We don't
      sink definitions of physical registers,
      and sinking an SSA definition isn't
      going to unblock an upstream instruction.
      
      Second, ignore uses of physical registers.
      Instructions that define physical registers are
      rejected for sinking, and so moving this one
      won't enable moving any defining instructions.
      As an added bonus, while virtual register
      use-def chains are generally small due
      to SSA goodness, iteration over the uses
      and definitions (used by hasOneNonDBGUse)
      for physical registers like EFLAGS
      can be rather expensive in practice.
      (This is the original reason for looking at this)
      
      Finally, to keep things simple continue
      to only consider this trick for registers that
      have a single use (via hasOneNonDBGUse),
      but to avoid spuriously breaking critical edges
      only do so if the definition resides
      in the same MBB and therefore this one directly
      blocks it from being sunk as well.
      If sinking them together is meant to be,
      let the iterative nature of this pass
      sink the definition into this block first.
      
      Update tests to accomodate this change,
      add new testcase where sinking avoids pipeline stalls.
      
      llvm-svn: 192608
      5cb7f4e3
    • Rafael Espindola's avatar
      Remove lib/Transforms/Instrumentation/ProfilingUtils.* · 8c1d78ad
      Rafael Espindola authored
      They were leftover from the old profiling support.
      
      Patch by Alastair Murray.
      
      llvm-svn: 192605
      8c1d78ad
    • Rafael Espindola's avatar
      Remove the now unused strong phi elimination pass. · 9770bde5
      Rafael Espindola authored
      llvm-svn: 192604
      9770bde5
    • Chris Lattner's avatar
      Basic blocks typically have few predecessors. Use a SmallDenseMap to · 94fc4bed
      Chris Lattner authored
      avoid a heap allocation when this is the case.
      
      llvm-svn: 192602
      94fc4bed
    • Evgeniy Stepanov's avatar
      [msan] Instrument x86.*_cvt* intrinsics. · be83d8f6
      Evgeniy Stepanov authored
      Currently MSan checks that arguments of *cvt* intrinsics are fully initialized.
      That's too much to ask: some of them only operate on lower half, or even
      quarter, of the input register.
      
      llvm-svn: 192599
      be83d8f6
    • Chad Rosier's avatar
      [AArch64] Add support for NEON scalar integer compare instructions. · d1f40d76
      Chad Rosier authored
      llvm-svn: 192596
      d1f40d76
Loading