llvm-project/llvm/lib/IR
Adrian Prantl 9d2f019fb6 Turn DISubprogram into a variable-length node.
DISubprogram currently has 10 pointer operands, several of which are
often nullptr. This patch reduces the amount of memory allocated by
DISubprogram by rearranging the operands such that containing type,
template params, and thrown types come last, and are only allocated
when they are non-null (or followed by non-null operands).

This patch also eliminates the entirely unused DisplayName operand.

This saves up to 4 pointer operands per DISubprogram. (I tried
measuring the effect on peak memory usage on an LTO link of an X86
llc, but the results were very noisy).

This reapplies r301498 with an attempted workaround for g++.

Differential Revision: https://reviews.llvm.org/D32560

llvm-svn: 301501
2017-04-26 23:59:52 +00:00
..
AsmWriter.cpp Add support for DW_TAG_thrown_type. 2017-04-26 22:56:44 +00:00
AttributeImpl.h Make getSlotAttributes return an AttributeSet instead of a wrapper list 2017-04-24 22:25:02 +00:00
Attributes.cpp Make getSlotAttributes return an AttributeSet instead of a wrapper list 2017-04-24 22:25:02 +00:00
AttributesCompatFunc.td
AutoUpgrade.cpp [X86][SSE] Update MOVNTDQA non-temporal loads to generic implementation (LLVM) 2017-04-14 15:05:35 +00:00
BasicBlock.cpp [IR] Share implementation for pairs of const and non-const methods using const_cast. NFCI 2017-03-27 05:46:58 +00:00
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Comdat.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
ConstantFold.cpp [APInt] Use lshrInPlace to replace lshr where possible 2017-04-18 17:14:21 +00:00
ConstantFold.h IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
ConstantRange.cpp [ConstantRange] Optimize APInt creation in getSignedMax/getSignedMin. 2017-04-18 23:02:39 +00:00
Constants.cpp [Constants] simplify get true/false code; NFCI 2017-04-16 17:00:21 +00:00
ConstantsContext.h [ADT, IR] Fix some Clang-tidy modernize-use-equals-delete and Include What You Use warnings; other minor fixes (NFC). 2016-12-07 22:06:02 +00:00
Core.cpp Prefer addAttr(Attribute::AttrKind) over the AttributeList overload 2017-04-19 17:28:52 +00:00
DIBuilder.cpp Add support for DW_TAG_thrown_type. 2017-04-26 22:56:44 +00:00
DataLayout.cpp [DataLayout] Removed default value from a variable that isn't used without being overwritten. Make variable an enum instead of an int to avoid a cast later. NFC 2017-04-19 00:31:38 +00:00
DebugInfo.cpp [StripDeadDebug/DIFinder] Track inlined SPs 2017-04-11 13:32:11 +00:00
DebugInfoMetadata.cpp Turn DISubprogram into a variable-length node. 2017-04-26 23:59:52 +00:00
DebugLoc.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
DiagnosticInfo.cpp [Stack Protection] Add diagnostic information for why stack protection was applied to a function 2017-02-28 16:02:37 +00:00
DiagnosticPrinter.cpp
Dominators.cpp Revert "Do not verify dominator tree if it has no roots" 2017-01-25 17:15:48 +00:00
Function.cpp Prefer addAttr(Attribute::AttrKind) over the AttributeList overload 2017-04-19 17:28:52 +00:00
GCOV.cpp [gcov] Sort file info before printing it 2017-04-26 00:16:10 +00:00
GVMaterializer.cpp
Globals.cpp [IR] Implement pairs of non-const and const methods using the const version instead of the non-const version. NFCI 2017-03-27 05:47:03 +00:00
IRBuilder.cpp Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
IRPrintingPasses.cpp Implement getPassName() for IR printing passes. 2017-03-10 07:09:20 +00:00
InlineAsm.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
Instruction.cpp [IR] Add AllowContract to FastMathFlags 2017-03-28 20:11:52 +00:00
Instructions.cpp use 'auto' with 'dyn_cast' and fix formatting; NFC 2017-04-19 16:22:19 +00:00
IntrinsicInst.cpp Add intrinsics for constrained floating point operations 2017-01-26 23:27:59 +00:00
LLVMBuild.txt
LLVMContext.cpp Add !associated metadata. 2017-03-17 22:17:24 +00:00
LLVMContextImpl.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
LLVMContextImpl.h Add support for DW_TAG_thrown_type. 2017-04-26 22:56:44 +00:00
LegacyPassManager.cpp Reverted: Track validity of pass results 2017-01-15 10:23:18 +00:00
MDBuilder.cpp Add function importing info from samplepgo profile to the module summary. 2017-02-28 18:09:44 +00:00
Mangler.cpp Move llvm::emitLinkerFlagsForGlobalCOFF() to Mangler. 2017-03-31 04:46:50 +00:00
Metadata.cpp Fix the InstCombine to reserve the VP metadata and sets correct call count. 2017-03-31 15:59:52 +00:00
MetadataImpl.h
Module.cpp Module::getOrInsertFunction is using C-style vararg instead of variadic templates. 2017-04-11 15:01:18 +00:00
ModuleSummaryIndex.cpp ThinLTO: handles modules with empty summaries 2016-10-08 04:44:18 +00:00
Operator.cpp [IR] Remove some unneeded includes from Operator.h and fix cpp files that were transitively depending on it. NFC 2017-03-20 05:08:41 +00:00
OptBisect.cpp Remove opt-bisect support for "cases" in favor of debug counters 2017-03-11 01:41:03 +00:00
Pass.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
PassManager.cpp [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
PassRegistry.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
ProfileSummary.cpp Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
Statepoint.cpp Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
SymbolTableListTraitsImpl.h ADT: Remove external uses of ilist_iterator, NFC 2016-09-03 01:22:56 +00:00
Type.cpp [IR] Inline Type::getScalarType() by using isVectorTy() and getVectorElementType() that were already available inline. 2017-04-08 05:47:09 +00:00
TypeFinder.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
Use.cpp
User.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 15:02:18 +00:00
Value.cpp Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
ValueSymbolTable.cpp [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-17 00:00:09 +00:00
ValueTypes.cpp getVectorElementType().getSizeInBits() -> getScalarSizeInBits() ; NFCI 2016-09-14 16:37:15 +00:00
Verifier.cpp Add support for DW_TAG_thrown_type. 2017-04-26 22:56:44 +00:00