llvm/test/Feature
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
..
OperandBundles [GMR/OperandBundles] Teach getModRefBehavior about operand bundles 2016-02-09 02:31:47 +00:00
alias2.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
aliases.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
alignment.ll
attributes.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
basictest.ll
callingconventions.ll HHVM calling conventions. 2015-09-29 22:09:16 +00:00
calltest.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
casttest.ll
cfgstructures.ll
cold.ll
comdat.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
const_pv.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
constexpr.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
constpointer.ll
escaped_label.ll
exception.ll [WinEH] Verify unwind edges against EH pad tree 2016-01-10 04:28:38 +00:00
float.ll
fold-fpcast.ll
forwardreftest.ll
global_pv.ll
global_section.ll
globalredefinition3.ll
globalvars.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
indirectcall2.ll
indirectcall.ll
inlineasm.ll
instructions.ll [IR] Make {extract,insert}element accept an index of any integer type. 2014-05-01 22:12:39 +00:00
intrinsic-noduplicate.ll [NVPTX] Mark nvvm synchronizing intrinsics as convergent. 2016-02-06 19:32:44 +00:00
intrinsics.ll
load_module.ll
md_on_instruction.ll Rewrite test/Feature/md_on_instruction.ll 2015-03-20 18:34:53 +00:00
memorymarkers.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
metadata.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
minsize_attr.ll
NamedMDNode2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
NamedMDNode.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
newcasts.ll
optnone-llc.ll MachineScheduler: Honor optnone functions in the pre-ra scheduler. 2016-01-20 22:38:25 +00:00
optnone-opt.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
optnone.ll Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
packed_struct.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
packed.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
paramattrs.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
ppcld.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
prefixdata.ll
prologuedata.ll Prologue support 2014-12-03 02:08:38 +00:00
properties.ll
prototype.ll
README.txt
recursivetype.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
seh-nounwind.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
simplecalltest.ll
small.ll
smallest.ll
sparcld.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
strip_names.ll Add a flag to the LLVMContext to disable name for Value other than GlobalValue 2016-03-10 01:28:54 +00:00
terminators.ll
testalloca.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
testconstants.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
testlogical.ll
testtype.ll
testvarargs.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
undefined.ll
unreachable.ll
varargs_new.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
varargs.ll
vector-cast-constant-exprs.ll
weak_constant.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
weirdnames.ll
x86ld.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00

This directory contains test cases for individual source features of LLVM.
It is designed to make sure that the major components of LLVM support all of the
features of LLVM, for very small examples.  Entire programs should not go here.

Regression tests for individual bug fixes should go into the test/Regression dir.