Skip to content
  1. Jun 17, 2013
  2. Jun 13, 2013
  3. Mar 14, 2013
    • Hal Finkel's avatar
      Move estimateStackSize from ARM into MachineFrameInfo · 628ba128
      Hal Finkel authored
      This is a generic function (derived from PEI); moving it into
      MachineFrameInfo eliminates a current redundancy between the ARM and AArch64
      backends, and will allow it to be used by the PowerPC target code.
      
      No functionality change intended.
      
      llvm-svn: 177111
      628ba128
  4. Feb 08, 2013
    • Bob Wilson's avatar
      Revert 172027 and 174336. Remove diagnostics about over-aligned stack objects. · 67bbf3aa
      Bob Wilson authored
      Aside from the question of whether we report a warning or an error when we
      can't satisfy a requested stack object alignment, the current implementation
      of this is not good.  We're not providing any source location in the diagnostics
      and the current warning is not connected to any warning group so you can't
      control it.  We could improve the source location somewhat, but we can do a
      much better job if this check is implemented in the front-end, so let's do that
      instead.  <rdar://problem/13127907>
      
      llvm-svn: 174741
      67bbf3aa
  5. Feb 05, 2013
  6. Jan 10, 2013
    • Manman Ren's avatar
      Stack Alignment: throw error if we can't satisfy the minimal alignment · 207bcbac
      Manman Ren authored
      requirement when creating stack objects in MachineFrameInfo.
      
      Add CreateStackObjectWithMinAlign to throw error when the minimal alignment
      can't be achieved and to clamp the alignment when the preferred alignment
      can't be achieved. Same is true for CreateVariableSizedObject.
      Will not emit error in CreateSpillStackObject or CreateStackObject.
      
      As long as callers of CreateStackObject do not assume the object will be
      aligned at the requested alignment, we should not have miscompile since
      later optimizations which look at the object's alignment will have the correct
      information.
      
      rdar://12713765
      
      llvm-svn: 172027
      207bcbac
  7. Jan 05, 2013
    • Jakob Stoklund Olesen's avatar
      Don't call destructors on MachineInstr and MachineOperand. · dc5285f1
      Jakob Stoklund Olesen authored
      The series of patches leading up to this one makes llc -O0 run 8% faster.
      
      When deallocating a MachineFunction, there is no need to visit all
      MachineInstr and MachineOperand objects to deallocate them. All their
      memory come from a BumpPtrAllocator that is about to be purged, and they
      have empty destructors anyway.
      
      This only applies when deallocating the MachineFunction.
      DeleteMachineInstr() should still be used to recycle MI memory during
      the codegen passes.
      
      Remove the LeakDetector support for MachineInstr. I've never seen it
      used before, and now it definitely doesn't work. With this patch, leaked
      MachineInstrs would be much less of a problem since all of their memory
      will be reclaimed by ~MachineFunction().
      
      llvm-svn: 171599
      dc5285f1
    • Jakob Stoklund Olesen's avatar
      Use ArrayRecycler for MachineInstr operand lists. · 1bfeecb4
      Jakob Stoklund Olesen authored
      Instead of an std::vector<MachineOperand>, use MachineOperand arrays
      from an ArrayRecycler living in MachineFunction.
      
      This has several advantages:
      
      - MachineInstr now has a trivial destructor, making it possible to
        delete them in batches when destroying MachineFunction. This will be
        enabled in a later patch.
      
      - Bypassing malloc() and free() can be faster, depending on the system
        library.
      
      - MachineInstr objects and their operands are allocated from the same
        BumpPtrAllocator, so they will usually be next to each other in
        memory, providing better locality of reference.
      
      - Reduce MachineInstr footprint. A std::vector is 24 bytes, the new
        operand array representation only uses 8+4+1 bytes in MachineInstr.
      
      - Better control over operand array reallocations. In the old
        representation, the use-def chains would be reordered whenever a
        std::vector reached its capacity. The new implementation never changes
        the use-def chain order.
      
      Note that some decisions in the code generator depend on the use-def
      chain orders, so this patch may cause different assembly to be produced
      in a few cases.
      
      llvm-svn: 171598
      1bfeecb4
  8. Jan 02, 2013
    • Chandler Carruth's avatar
      Move all of the header files which are involved in modelling the LLVM IR · 9fb823bb
      Chandler Carruth authored
      into their new header subdirectory: include/llvm/IR. This matches the
      directory structure of lib, and begins to correct a long standing point
      of file layout clutter in LLVM.
      
      There are still more header files to move here, but I wanted to handle
      them in separate commits to make tracking what files make sense at each
      layer easier.
      
      The only really questionable files here are the target intrinsic
      tablegen files. But that's a battle I'd rather not fight today.
      
      I've updated both CMake and Makefile build systems (I think, and my
      tests think, but I may have missed something).
      
      I've also re-sorted the includes throughout the project. I'll be
      committing updates to Clang, DragonEgg, and Polly momentarily.
      
      llvm-svn: 171366
      9fb823bb
  9. Dec 30, 2012
  10. Dec 20, 2012
  11. Dec 19, 2012
  12. Dec 04, 2012
  13. 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
  14. Nov 01, 2012
    • Chandler Carruth's avatar
      Revert the majority of the next patch in the address space series: · 5da3f051
      Chandler Carruth authored
      r165941: Resubmit the changes to llvm core to update the functions to
               support different pointer sizes on a per address space basis.
      
      Despite this commit log, this change primarily changed stuff outside of
      VMCore, and those changes do not carry any tests for correctness (or
      even plausibility), and we have consistently found questionable or flat
      out incorrect cases in these changes. Most of them are probably correct,
      but we need to devise a system that makes it more clear when we have
      handled the address space concerns correctly, and ideally each pass that
      gets updated would receive an accompanying test case that exercises that
      pass specificaly w.r.t. alternate address spaces.
      
      However, from this commit, I have retained the new C API entry points.
      Those were an orthogonal change that probably should have been split
      apart, but they seem entirely good.
      
      In several places the changes were very obvious cleanups with no actual
      multiple address space code added; these I have not reverted when
      I spotted them.
      
      In a few other places there were merge conflicts due to a cleaner
      solution being implemented later, often not using address spaces at all.
      In those cases, I've preserved the new code which isn't address space
      dependent.
      
      This is part of my ongoing effort to clean out the partial address space
      code which carries high risk and low test coverage, and not likely to be
      finished before the 3.2 release looms closer. Duncan and I would both
      like to see the above issues addressed before we return to these
      changes.
      
      llvm-svn: 167222
      5da3f051
  15. Oct 15, 2012
  16. Oct 11, 2012
  17. Oct 09, 2012
  18. Oct 08, 2012
  19. Sep 26, 2012
  20. Sep 21, 2012
  21. Sep 20, 2012
  22. Sep 12, 2012
  23. Sep 06, 2012
  24. Aug 22, 2012
  25. Jun 28, 2012
  26. Jun 20, 2012
  27. Mar 31, 2012
  28. Mar 27, 2012
  29. Mar 04, 2012
  30. Feb 06, 2012
  31. Feb 05, 2012
Loading