1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
Go to file
Jakob Stoklund Olesen af2ae34dc0 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
autoconf Fix a stray 'dnl' that my editor line-wrapped into this comment. Thanks 2013-01-05 00:34:40 +00:00
bindings [python] Add markup option to disassembler 2012-12-01 21:57:30 +00:00
cmake Add time getters to the process interface for requesting the elapsed 2013-01-04 23:19:55 +00:00
docs Update the gcc-loops benchmarks results with the new automatic unrolling feature. 2013-01-04 19:10:34 +00:00
examples Update the examples for the new header file locations. 2013-01-02 11:56:33 +00:00
include Use ArrayRecycler for MachineInstr operand lists. 2013-01-05 05:00:09 +00:00
lib Use ArrayRecycler for MachineInstr operand lists. 2013-01-05 05:00:09 +00:00
projects Clean up the sample include orderings, not that it really matters... 2012-12-04 10:46:21 +00:00
runtime libprofile/CommonProfiling.c: Fix according to C89. 2012-11-02 01:32:02 +00:00
test Fix a typo. Remove the duplicated test. 2013-01-05 01:17:46 +00:00
tools Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
unittests Rename the unittest from ArrayRecylerTest.cpp to ArrayRecyclerTest.cpp. 2013-01-05 02:08:43 +00:00
utils Add Textmate bundle for Tablegen syntax-highlighting 2013-01-04 18:55:24 +00:00
.arcconfig Add .arcconfig to the repository. Useful if someone wants to use phabricator's command line tool. 2012-12-01 12:07:58 +00:00
.gitignore Add extra vim swap file pattern 2012-10-09 23:48:34 +00:00
CMakeLists.txt Fix spelling 2012-12-13 15:25:07 +00:00
CODE_OWNERS.TXT R600: Add entry in CODE_OWNERS.TXT 2012-12-19 22:10:35 +00:00
configure Finally, fix the autoconf setup to allow for a missing clock_gettime; 2013-01-05 00:29:06 +00:00
CREDITS.TXT Update my email address. 2012-11-29 21:17:26 +00:00
LICENSE.TXT Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
llvm.spec.in Tidy up. s/Low Level Virtual Machine/LLVM/. 2012-01-25 22:00:23 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Update the root Makefile for VMCore -> IR. Missed by my original search 2013-01-02 09:27:25 +00:00
Makefile.common Makefile.common: Update a description, s/Source/SOURCES/ , according to MakefileGuide.html#control-variables . 2012-12-07 01:43:23 +00:00
Makefile.config.in Add options to disable building of ARCMT, Rewriter and Static Analyzer 2012-12-13 16:07:19 +00:00
Makefile.rules Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
README.txt Test commit. 2012-11-29 16:19:11 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.