Skip to content
  1. Feb 16, 2012
    • Lang Hames's avatar
      2055493b
    • Bill Wendling's avatar
      Give a description of the Objective-C garbage collection module flags. · 7346277b
      Bill Wendling authored
      The rule governing the flags is this:
      
        no-gc + no-gc   = no-gc
        no-gc +    gc   = no-gc
        no-gc + gc-only = error
           gc +    gc   = gc
           gc + gc-only = gc-only
      gc-only + gc-only = gc-only
      
      llvm-svn: 150646
      7346277b
    • Eli Friedman's avatar
      loop-rotate shouldn't hoist alloca instructions out of a loop. Patch by... · c458885c
      Eli Friedman authored
      loop-rotate shouldn't hoist alloca instructions out of a loop.  Patch by Patrik Hägglund, with slightly modified test.  Issue reported by Patrik Hägglund on llvmdev.
      
      llvm-svn: 150642
      c458885c
    • 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
    • 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
    • Lang Hames's avatar
      Make LiveIntervals::handleMove() bundle aware. · 923d199a
      Lang Hames authored
      llvm-svn: 150630
      923d199a
  2. Feb 15, 2012
Loading