llvm-project/llvm/test
Mircea Trofin 97ab068034 [NPM] Do not run function simplification pipeline unnecessarily
The CGSCC pass manager interplay with the FunctionAnalysisManagerCGSCCProxy is 'special' in the sense that the former will rerun the latter if there are changes to a SCC structure; that being said, some of the functions in the SCC may be unchanged. In that case, the function simplification pipeline will be re-run, which impacts compile time[1].

This patch allows the function simplification pipeline be skipped if it was already run and the function was not modified since.

The behavior is currently disabled by default. This is because, currently, the rerunning of the function simplification pipeline on an unchanged function may still result in changes. The patch simplifies investigating and fixing those cases where repeated function pass runs do actually positively impact code quality, while offering an easy workaround for those impacted negatively by compile time regressions, and not impacting mainline scenarios.

[1] A [[ http://llvm-compile-time-tracker.com/compare.php?from=eb37d3546cd0c6e67798496634c45e501f7806f1&to=ac722d1190dc7bbdd17e977ef7ec95e69eefc91e&stat=instructions | compile time tracker ]] run with the option enabled.

Differential Revision: https://reviews.llvm.org/D98103
2021-05-06 12:24:33 -07:00
..
Analysis [NFC][X86][CostModel] Add tests for byteswap intrinsic 2021-05-05 20:11:46 +03:00
Assembler [LLParser] Print mismatched types in error message 2021-04-21 13:10:37 -07:00
Bindings [ARM][AArch64] Require appropriate features for crypto algorithms 2021-04-28 16:26:18 +01:00
Bitcode Preserve metadata on masked intrinsics in auto-upgrade 2021-05-05 15:51:46 -05:00
BugPoint [AIX] Add %pluginext and update tests to use proper pluginext 2021-04-27 20:34:54 -04:00
CodeGen [SystemZ] Don't use libcall for 128 bit shifts. 2021-05-06 18:14:41 +02:00
DebugInfo [MCAsmInfo] Support UsesCFIForDebug for targets with no exception handling 2021-05-06 04:53:45 +05:30
Demangle [demangler] Initial support for the new Rust mangling scheme 2021-05-03 16:44:30 -07:00
Examples
ExecutionEngine
Feature
FileCheck
Instrumentation [ASAN][AMDGPU] Add support for accesses to global and constant addrspaces 2021-05-03 09:01:15 +05:30
Integer
JitListener
LTO
Linker Linker: Avoid scheduling the link of a global value twice due to an alias 2021-04-28 13:22:10 -07:00
MC [AMDGPU] Fix 64 bit DPP validation 2021-05-06 08:40:26 -07:00
MachineVerifier GlobalISel: Relax verification of physical register copy types 2021-04-28 08:45:41 -04:00
Object
ObjectYAML
Other [NPM] Do not run function simplification pipeline unnecessarily 2021-05-06 12:24:33 -07:00
SafepointIRVerifier
Support [SystemZ][z/OS] Add the functions needed for handling EBCDIC I/O 2021-05-03 08:52:38 -04:00
SymbolRewriter
TableGen [TableGen] Use sign rotated VBR for OPC_EmitInteger. 2021-05-02 12:40:44 -07:00
ThinLTO/X86 Preserve the lexical order for global variables during llvm-link merge 2021-04-26 10:11:34 -07:00
Transforms [LV] Account for tripcount when calculation vectorization profitability 2021-05-06 12:36:46 +01:00
Unit
Verifier [NFC][Verifier] Split token1.ll into two, assert/non-assert versions 2021-04-28 13:58:38 +03:00
YAMLParser
tools Allow llvm-dis to disassemble multiple files 2021-05-06 11:08:55 -07:00
.clang-format
CMakeLists.txt [llvm-rc] Add a GNU windres-like frontend to llvm-rc 2021-04-26 22:04:29 +03:00
TestRunner.sh
lit.cfg.py [AIX] Add %pluginext and update tests to use proper pluginext 2021-04-27 20:34:54 -04:00
lit.site.cfg.py.in [AIX] Add %pluginext and update tests to use proper pluginext 2021-04-27 20:34:54 -04:00