Go to file
Jakob Stoklund Olesen 1bfeecb491 Use ArrayRecycler for MachineInstr operand lists.
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
2013-01-05 05:00:09 +00:00
clang [mips] Fix data layout string. Add 64 to the list of native integer widths 2013-01-05 02:04:34 +00:00
clang-tools-extra Add a namespace qualifier to the befriending statement for 2013-01-05 02:57:54 +00:00
compiler-rt Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
debuginfo-tests XTARGET was removed, update debug-info tests. 2012-10-20 01:38:50 +00:00
libclc Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
libcxx Move common header files into a 'support' directory; make 'testit' include -I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files 2013-01-05 03:21:01 +00:00
libcxxabi Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
lld [CMake] Don't add flags this late and don't force libc++. Error if we know the compiler doesn't support c++11. 2013-01-05 04:16:52 +00:00
lldb Mark TestPlatformCommand (test_status) as expected to fail on Linux 2013-01-05 00:25:12 +00:00
llvm Use ArrayRecycler for MachineInstr operand lists. 2013-01-05 05:00:09 +00:00
polly Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to 2013-01-02 11:47:44 +00:00