Go to file
Justin Bogner 6543a9385f SelectionDAG: Store SDNode operands in an ArrayRecycler
Currently some SDNode operands are malloc'd, some are stored inline in
subclasses of SDNode, and some are thrown into a BumpPtrAllocator.
This scheme is complex, inconsistent, and makes refactoring SDNodes
fairly difficult.

Instead, we can allocate all of the operands using an ArrayRecycler
that wraps a BumpPtrAllocator. This keeps the cache locality when
iterating operands, improves locality when iterating SDNodes without
looking at operands, and vastly simplifies the ownership semantics.

It also means we stop overallocating SDNodes by 2-3x and will make it
simpler to fix the rampant undefined behaviour we have in how we
mutate SDNodes from one kind to another (See llvm.org/pr26808).

This is NFC other than the changes in memory behaviour, and I ran some
LNT tests to make sure this didn't hurt compile time. Not many tests
changed: there were a couple of 1-2% regressions reported, but there
were more improvements (of up to 4%) than regressions.

llvm-svn: 262886
2016-03-08 00:39:51 +00:00
clang Add accidentally forgotten testcase from r262881. 2016-03-08 00:34:49 +00:00
clang-tools-extra [docs] Clean up doxygen comments a bit. 2016-03-06 04:05:59 +00:00
compiler-rt [sanitizer-common] Use @LINE in test. 2016-03-07 13:44:20 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc math: Fix ilogb(double) return type 2016-02-24 00:52:15 +00:00
libcxx Implement P0025R0: 'An algorithm to clamp a value between a pair of boundary values' for C++17 2016-03-07 22:43:49 +00:00
libcxxabi Reducing stack usage of test 2016-03-04 14:25:13 +00:00
libunwind [AArch64] Fix libunwind build when using GNU assembler 2016-02-11 21:22:57 +00:00
lld Add support for common symbols. 2016-03-07 19:15:57 +00:00
lldb Change over the broadcaster/listener process to hold shared or weak pointers 2016-03-07 21:50:25 +00:00
llgo [llgo] Force exporting __morestack from llgoi 2015-11-27 04:46:46 +00:00
llvm SelectionDAG: Store SDNode operands in an ArrayRecycler 2016-03-08 00:39:51 +00:00
openmp [STATS] fix output formatting when sample count is 0 2016-03-03 21:24:13 +00:00
polly doxygen: Also show private members 2016-03-07 21:38:19 +00:00