llvm-project/llvm/lib/IR
Jessica Paquette e49374d009 Add remarks describing when a pass changes the IR instruction count of a module
This patch adds a remark which tells the user when a pass changes the number of
IR instructions in a module.

It can be enabled by using -Rpass-analysis=size-info.

The point of this is to make it easier to collect statistics on how passes
modify programs in terms of code size. This is similar in concept to timing
reports, but using a remark-based interface makes it easy to diff changes over
multiple compilations of the same program.

By adding functionality like this, we can see
  * Which passes impact code size the most
  * How passes impact code size at different optimization levels
  * Which pass might have contributed the most to an overall code size
    regression

The patch lives in the legacy pass manager, but since it's simply emitting
remarks, it shouldn't be too difficult to adapt the functionality to the new
pass manager as well. This can also be adapted to handle MachineInstr counts in
code gen passes.

https://reviews.llvm.org/D38768

llvm-svn: 332739
2018-05-18 17:26:39 +00:00
..
AsmWriter.cpp [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
AttributeImpl.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
Attributes.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
AttributesCompatFunc.td
AutoUpgrade.cpp [X86] Remove and autoupgrade avx512.vbroadcast.ss/avx512.vbroadcast.sd intrinsics. 2018-05-14 18:21:22 +00:00
BasicBlock.cpp [BasicBlock] Add instructionsWithoutDebug methods to skip debug insts. 2018-04-19 09:48:07 +00:00
CMakeLists.txt [IR][CodeGen] Remove dependency on EVT from IR/Function.cpp. Move EVT to CodeGen layer. 2018-03-29 17:21:10 +00:00
Comdat.cpp [LLVM-C] [bindings/go] Add C and Golang bindings for COMDAT 2018-03-14 18:33:53 +00:00
ConstantFold.cpp Remove @brief commands from doxygen comments, too. 2018-05-01 16:10:38 +00:00
ConstantFold.h
ConstantRange.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
Constants.cpp Make ConstantDataArray::get constructor templated. Will support signed integers. 2018-03-19 19:49:28 +00:00
ConstantsContext.h Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
Core.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
DIBuilder.cpp [CodeView] Improve debugging of virtual base class member variables 2018-05-14 21:21:22 +00:00
DataLayout.cpp Add default address space for functions to the data layout (1/3) 2018-02-19 09:56:22 +00:00
DebugInfo.cpp [LLVM-C] Consolidate llgo's DIBuilder Bindings 2018-05-10 21:10:06 +00:00
DebugInfoMetadata.cpp [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
DebugLoc.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
DiagnosticHandler.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
DiagnosticInfo.cpp This change add's optimization remark in LoopVersioning LICM pass. 2018-01-23 09:47:28 +00:00
DiagnosticPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Dominators.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
Function.cpp Add remarks describing when a pass changes the IR instruction count of a module 2018-05-18 17:26:39 +00:00
GVMaterializer.cpp
Globals.cpp Sink Analysis/ObjectUtil(canBeOmittedFromSymbolTable) into IR so it can be legitimately be used by Object/IRSymtab 2018-03-21 19:23:45 +00:00
IRBuilder.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
IRPrintingPasses.cpp [Debugify] Add -debugify-each for testing each pass in a pipeline 2018-05-15 00:29:27 +00:00
InlineAsm.cpp [inlineasm] Fix crash when number of matched input constraint operands overflows signed char 2017-10-25 12:51:32 +00:00
Instruction.cpp [IPSCCP] Remove calls without side effects 2018-01-09 21:58:46 +00:00
Instructions.cpp Remove @brief commands from doxygen comments, too. 2018-05-01 16:10:38 +00:00
IntrinsicInst.cpp Add ‘llvm.experimental.constrained.fma‘ Intrinsic. 2017-08-24 04:18:24 +00:00
LLVMBuild.txt Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
LLVMContext.cpp allow custom OptBisect classes set to LLVMContext 2018-04-05 10:29:37 +00:00
LLVMContextImpl.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
LLVMContextImpl.h [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
LegacyPassManager.cpp Add remarks describing when a pass changes the IR instruction count of a module 2018-05-18 17:26:39 +00:00
MDBuilder.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
Mangler.cpp [IR] Avoid the need to prefix MS C++ symbols with '\01' 2018-03-16 20:13:32 +00:00
Metadata.cpp [IR] Change std::sort to llvm::sort in response to r327219 2018-04-05 21:52:24 +00:00
MetadataImpl.h
Module.cpp Add remarks describing when a pass changes the IR instruction count of a module 2018-05-18 17:26:39 +00:00
ModuleSummaryIndex.cpp [ThinLTO] Add GraphTraits for FunctionSummaries 2018-02-19 15:14:50 +00:00
Operator.cpp Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
OptBisect.cpp [NFC] OptPassGate extracted from OptBisect 2018-03-27 16:57:20 +00:00
Pass.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
PassManager.cpp
PassRegistry.cpp [Pass] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-06 23:05:38 +00:00
ProfileSummary.cpp [ProfileSummary] Move a vector we're about to destroy anyway; NFC 2018-04-12 20:54:05 +00:00
SafepointIRVerifier.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
Statepoint.cpp [Statepoint] Add helper functions for GCRelocate and GCResult 2017-06-20 20:54:57 +00:00
SymbolTableListTraitsImpl.h
Type.cpp [IR] Add Type::isIntOrIntVectorTy(unsigned) similar to the existing isIntegerTy(unsigned), but also works for vectors. 2017-07-09 07:04:03 +00:00
TypeFinder.cpp Use ranged for loops in TypeFinder.cpp, NFC 2018-02-08 18:02:27 +00:00
Use.cpp
User.cpp Remove redundant includes from lib/IR. 2017-12-13 21:30:52 +00:00
Value.cpp In thin and full LTO + CFI, direct function calls may go through jump table 2018-05-17 14:29:07 +00:00
ValueSymbolTable.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
Verifier.cpp [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00