Skip to content
  1. Feb 16, 2012
    • Fariborz Jahanian's avatar
      objc-arc: For arc's ivar layout, treat __unsafe_unretained ivars · 430b35ed
      Fariborz Jahanian authored
      as unscanned. // rdar://10832643
      
      llvm-svn: 150639
      430b35ed
    • Jakob Stoklund Olesen's avatar
      Enable register mask operands for x86 calls. · 8a450cb2
      Jakob Stoklund Olesen authored
      Call instructions no longer have a list of 43 call-clobbered registers.
      Instead, they get a single register mask operand with a bit vector of
      call-preserved registers.
      
      This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call
      instruction, and it speeds up building call instructions because those
      43 imp-def operands no longer need to be added to use-def lists. (And
      removed and shifted and re-added for every explicit call operand).
      
      Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and
      BranchFolding are significantly faster because they can deal with call
      clobbers in bulk.
      
      Overall, clang -O2 is between 0% and 8% faster, uniformly distributed
      depending on call density in the compiled code.  Debug builds using
      clang -O0 are 0% - 3% faster.
      
      I have verified that this patch doesn't change the assembly generated
      for the LLVM nightly test suite when building with -disable-copyprop
      and -disable-branch-fold.
      
      Branch folding behaves slightly differently in a few cases because call
      instructions have different hash values now.
      
      Copy propagation flushes its data structures when it crosses a register
      mask operand. This causes it to leave a few dead copies behind, on the
      order of 20 instruction across the entire nightly test suite, including
      SPEC. Fixing this properly would require the pass to use different data
      structures.
      
      llvm-svn: 150638
      8a450cb2
    • Eric Christopher's avatar
      Revert "Add a completed/incomplete type difference. This allows us to have" · 9a89705d
      Eric Christopher authored
      This reverts commit 9a68d4584afcd0853b930bd80235b58736e785b4.
      
      llvm-svn: 150637
      9a89705d
    • Bill Wendling's avatar
      Remove extraneous tests. · b0281431
      Bill Wendling authored
      llvm-svn: 150636
      b0281431
    • Bill Wendling's avatar
      Add a test for generating Objective-C metadata from module flags. · 6a26ab7f
      Bill Wendling authored
      llvm-svn: 150635
      6a26ab7f
    • Jakob Stoklund Olesen's avatar
      Handle register masks in branch folding. · e9e30d08
      Jakob Stoklund Olesen authored
      Don't attempt to move instructions with regmask operands. They are most
      likely calls anyway.
      
      llvm-svn: 150634
      e9e30d08
    • Andrew Trick's avatar
      Fix library visibility problems with VLIWPacketizer. · 20349b88
      Andrew Trick authored
      The existing framework for postra scheduling is library local. We want to keep it that way. Soon we will have a more general MachineScheduler interface. At that time, various bits will be exposed to targets. In the meantime, the VLIWPacketizer wants to use ScheduleDAGInstrs directly, so it needs to wrapped in a PIMPL to avoid exposing it to the target interface.
      
      llvm-svn: 150633
      20349b88
    • Bill Wendling's avatar
      Use the enum instead of 'unsigned'. · 399eae61
      Bill Wendling authored
      llvm-svn: 150632
      399eae61
    • Eric Christopher's avatar
      Add a completed/incomplete type difference. This allows us to have · 7381907e
      Eric Christopher authored
      partial types for contexts and forward decls while allowing us to
      complete types later on for debug purposes.
      
      This piggy-backs on the metadata replacement and rauw changes
      for temporary nodes and takes advantage of the incremental
      support I added in earlier. This allows us to, if we decide,
      to limit adding methods and variables to structures in order
      to limit the amount of debug information output into a .o file.
      
      The caching is a bit complicated though so any thoughts on
      untangling that are welcome.
      
      llvm-svn: 150631
      7381907e
    • Lang Hames's avatar
      Make LiveIntervals::handleMove() bundle aware. · 923d199a
      Lang Hames authored
      llvm-svn: 150630
      923d199a
  2. Feb 15, 2012
Loading