llvm/tools
Mehdi Amini 2de9927963 Add a flag to the LLVMContext to disable name for Value other than GlobalValue
Summary:
This is intended to be a performance flag, on the same level as clang
cc1 option "--disable-free". LLVM will never initialize it by default,
it will be up to the client creating the LLVMContext to request this
behavior. Clang will do it by default in Release build (just like
--disable-free).

"opt" and "llc" can opt-in using -disable-named-value command line
option.

When performing LTO on llvm-tblgen, the initial merging of IR peaks
at 92MB without this patch, and 86MB after this patch,setNameImpl()
drops from 6.5MB to 0.5MB.
The total link time goes from ~29.5s to ~27.8s.

Compared to a compile-time flag (like the IRBuilder one), it performs
very close. I profiled on SROA and obtain these results:

 420ms with IRBuilder that preserve name
 372ms with IRBuilder that strip name
 375ms with IRBuilder that preserve name, and a runtime flag to strip

Reviewers: chandlerc, dexonsmith, bogner

Subscribers: joker.eph, llvm-commits

Differential Revision: http://reviews.llvm.org/D17946

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@263086 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-10 01:28:54 +00:00
..
bugpoint Fix Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-02 18:20:45 +00:00
bugpoint-passes Remove autoconf support 2016-01-26 21:29:08 +00:00
dsymutil [dsymutil] Skip mach-o paired relocations 2016-02-01 04:43:14 +00:00
gold Fix GOLD plugin build after r262976 2016-03-09 01:55:15 +00:00
llc Add a flag to the LLVMContext to disable name for Value other than GlobalValue 2016-03-10 01:28:54 +00:00
lli [Orc] Add lazy-JITting support for i386. 2016-02-10 01:02:33 +00:00
llvm-ar Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-as Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-as-fuzzer [libFuzzer] make LLVMFuzzerTestOneInput (the fuzzer target function) return int instead of void. The actual return value is not *yet* used (and expected to be 0). This change is API breaking, so the fuzzers will need to be updated. 2015-10-02 23:34:06 +00:00
llvm-bcanalyzer Restore "[ThinLTO] Use MD5 hash in function index." with fix 2016-02-10 21:55:02 +00:00
llvm-c-test Add support for invoke/landingpad/resume in C API test 2016-02-18 20:38:32 +00:00
llvm-config [llvm-config] Get rid of code related to the Makefile builds 2016-03-08 11:49:24 +00:00
llvm-cov Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-cxxdump Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-diff Remove uses of builtin comma operator. 2016-02-18 22:09:30 +00:00
llvm-dis Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-dwarfdump Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-dwp llvm-dwp: Add missing copyright notice to llvm-dwp.cpp 2016-03-01 22:29:00 +00:00
llvm-extract Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-go Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-jitlistener Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-link Pass a std::unique_ptr to IRMover::move. 2016-02-16 18:50:12 +00:00
llvm-lto Fix library dependency for llvm-lto after r262977 2016-03-09 02:34:13 +00:00
llvm-mc Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
llvm-mc-fuzzer [libFuzzer] make LLVMFuzzerTestOneInput (the fuzzer target function) return int instead of void. The actual return value is not *yet* used (and expected to be 0). This change is API breaking, so the fuzzers will need to be updated. 2015-10-02 23:34:06 +00:00
llvm-mcmarkup Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-nm [llvm-nm] Restore the previous behaviour (pre r262525). 2016-03-02 22:33:49 +00:00
llvm-objdump [lanai] Add ELF enum value and relocations. 2016-03-01 21:21:42 +00:00
llvm-pdbdump [llvm-pdbdump] Dump line table information. 2016-03-08 21:42:24 +00:00
llvm-profdata Add a profile summary class specific to instrumentation profiles. 2016-02-17 18:18:47 +00:00
llvm-readobj [llvm-readobj] Enable GNU style section group print 2016-03-09 19:16:13 +00:00
llvm-rtdyld Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-shlib Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-size [llvm-size] Remove variable used only once. 2016-02-13 01:52:47 +00:00
llvm-split Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-stress Remove autoconf support 2016-01-26 21:29:08 +00:00
llvm-symbolizer Remove autoconf support 2016-01-26 21:29:08 +00:00
lto void foo() is not a valid C prototype, one has to write void foo(void) 2016-03-09 02:36:09 +00:00
msbuild
obj2yaml Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
opt Add a flag to the LLVMContext to disable name for Value other than GlobalValue 2016-03-10 01:28:54 +00:00
sancov [sancov] print_coverage_points command. 2016-02-27 02:21:44 +00:00
sanstats Remove autoconf support 2016-01-26 21:29:08 +00:00
verify-uselistorder Remove autoconf support 2016-01-26 21:29:08 +00:00
xcode-toolchain [CMake] [Darwin] Add support for generating Xcode-compatible toolchains that xcodebuild and xcrun can search 2015-10-15 20:09:01 +00:00
yaml2obj Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
CMakeLists.txt [CMake] Add the gold plugin before clang 2016-02-26 21:07:04 +00:00
LLVMBuild.txt llvm-dwp: Initial layout 2015-12-01 00:48:34 +00:00