Skip to content
  1. Dec 03, 2012
    • 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
  2. Nov 15, 2012
  3. Nov 01, 2012
    • Chandler Carruth's avatar
      Revert the series of commits starting with r166578 which introduced the · 7ec5085e
      Chandler Carruth authored
      getIntPtrType support for multiple address spaces via a pointer type,
      and also introduced a crasher bug in the constant folder reported in
      PR14233.
      
      These commits also contained several problems that should really be
      addressed before they are re-committed. I have avoided reverting various
      cleanups to the DataLayout APIs that are reasonable to have moving
      forward in order to reduce the amount of churn, and minimize the number
      of commits that were reverted. I've also manually updated merge
      conflicts and manually arranged for the getIntPtrType function to stay
      in DataLayout and to be defined in a plausible way after this revert.
      
      Thanks to Duncan for working through this exact strategy with me, and
      Nick Lewycky for tracking down the really annoying crasher this
      triggered. (Test case to follow in its own commit.)
      
      After discussing with Duncan extensively, and based on a note from
      Micah, I'm going to continue to back out some more of the more
      problematic patches in this series in order to ensure we go into the
      LLVM 3.2 branch with a reasonable story here. I'll send a note to
      llvmdev explaining what's going on and why.
      
      Summary of reverted revisions:
      
      r166634: Fix a compiler warning with an unused variable.
      r166607: Add some cleanup to the DataLayout changes requested by
               Chandler.
      r166596: Revert "Back out r166591, not sure why this made it through
               since I cancelled the command. Bleh, sorry about this!
      r166591: Delete a directory that wasn't supposed to be checked in yet.
      r166578: Add in support for getIntPtrType to get the pointer type based
               on the address space.
      llvm-svn: 167221
      7ec5085e
    • Michael Liao's avatar
      Cleanup another place redundant SP maintained · 70a99c8e
      Michael Liao authored
      llvm-svn: 167209
      70a99c8e
  4. Oct 24, 2012
  5. Oct 09, 2012
  6. Oct 03, 2012
  7. Oct 02, 2012
  8. Aug 30, 2012
    • Michael Liao's avatar
      Fix PR13727 · 3c898064
      Michael Liao authored
      - The root cause is that target constant materialization in X86 fast-isel
        creates a PC-rel addressing which may overflow 32-bit range in non-Small code
        model if .rodata section is allocated too far away from code segment in
        MCJIT, which uses Large code model so far.
      - Follow the similar logic to fix non-Small code model in fast-isel by skipping
        non-Small code model.
      
      llvm-svn: 162881
      3c898064
  9. Aug 11, 2012
  10. Aug 03, 2012
    • Bob Wilson's avatar
      Fall back to selection DAG isel for calls to builtin functions. · 3e6fa462
      Bob Wilson authored
      Fast isel doesn't currently have support for translating builtin function
      calls to target instructions.  For embedded environments where the library
      functions are not available, this is a matter of correctness and not
      just optimization.  Most of this patch is just arranging to make the
      TargetLibraryInfo available in fast isel.  <rdar://problem/12008746>
      
      llvm-svn: 161232
      3e6fa462
  11. Jul 25, 2012
  12. Jul 23, 2012
  13. Jul 19, 2012
  14. Jul 11, 2012
  15. Jul 05, 2012
  16. May 25, 2012
  17. May 11, 2012
  18. Apr 30, 2012
    • Derek Schuff's avatar
      Fix fastcc structure return with fast-isel on x86-32 · b051adf2
      Derek Schuff authored
      On x86-32, structure return via sret lets the callee pop the hidden
      pointer argument off the stack, which the caller then re-pushes.
      However if the calling convention is fastcc, then a register is used
      instead, and the caller should not adjust the stack. This is
      implemented with a check of IsTailCallConvention
      X86TargetLowering::LowerCall but is now checked properly in
      X86FastISel::DoSelectCall.
      
      (this time, actually commit what was reviewed!)
      
      llvm-svn: 155825
      b051adf2
  19. Apr 28, 2012
    • Derek Schuff's avatar
      Revert r155745 · a99b1681
      Derek Schuff authored
      llvm-svn: 155746
      a99b1681
    • Derek Schuff's avatar
      Fix fastcc structure return with fast-isel on x86-32 · bbf8b83e
      Derek Schuff authored
      On x86-32, structure return via sret lets the callee pop the hidden
      pointer argument off the stack, which the caller then re-pushes.
      However if the calling convention is fastcc, then a register is used
      instead, and the caller should not adjust the stack. This is
      implemented with a check of IsTailCallConvention
      X86TargetLowering::LowerCall but is now checked properly in
      X86FastISel::DoSelectCall.
      
      llvm-svn: 155745
      bbf8b83e
  20. Apr 20, 2012
  21. Mar 27, 2012
  22. Mar 11, 2012
  23. Feb 22, 2012
  24. Feb 16, 2012
    • Jakob Stoklund Olesen's avatar
      Use the same CALL instructions for Windows as for everything else. · 97e3115d
      Jakob Stoklund Olesen authored
      The different calling conventions and call-preserved registers are
      represented with regmask operands that are added dynamically.
      
      llvm-svn: 150708
      97e3115d
    • 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
  25. Feb 15, 2012
  26. Jan 20, 2012
  27. Jan 10, 2012
  28. Jan 09, 2012
  29. Dec 02, 2011
    • Nick Lewycky's avatar
      Move global variables in TargetMachine into new TargetOptions class. As an API · 50f02cb2
      Nick Lewycky authored
      change, now you need a TargetOptions object to create a TargetMachine. Clang
      patch to follow.
      
      One small functionality change in PTX. PTX had commented out the machine
      verifier parts in their copy of printAndVerify. That now calls the version in
      LLVMTargetMachine. Users of PTX who need verification disabled should rely on
      not passing the command-line flag to enable it.
      
      llvm-svn: 145714
      50f02cb2
  30. Nov 29, 2011
Loading