1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/include/llvm
Chandler Carruth 1b5532dd29 [attrs] Split the late-revisit pattern for deducing norecurse in
a top-down manner into a true top-down or RPO pass over the call graph.

There are specific patterns of function attributes, notably the
norecurse attribute, which are most effectively propagated top-down
because all they us caller information.

Walk in RPO over the call graph SCCs takes the form of a module pass run
immediately after the CGSCC pass managers postorder walk of the SCCs,
trying again to deduce norerucrse for each singular SCC in the call
graph.

This removes a very legacy pass manager specific trick of using a lazy
revisit list traversed during finalization of the CGSCC pass. There is
no analogous finalization step in the new pass manager, and a lazy
revisit list is just trying to produce an RPO iteration of the call
graph. We can do that more directly if more expensively. It seems
unlikely that this will be the expensive part of any compilation though
as we never examine the function bodies here. Even in an LTO run over
a very large module, this should be a reasonable fast set of operations
over a reasonably small working set -- the function call graph itself.

In the future, if this really is a compile time performance issue, we
can look at building support for both post order and RPO traversals
directly into a pass manager that builds and maintains the PO list of
SCCs.

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

llvm-svn: 257163
2016-01-08 10:55:52 +00:00
..
ADT IntEqClasses: Let join() return the new leader 2016-01-08 01:16:39 +00:00
Analysis [LCG] Re-order the lazy node iterator below the node type to make some 2016-01-08 10:50:11 +00:00
AsmParser AsmParser: Save and restore the parsing state for types using SlotMapping. 2015-08-21 21:32:39 +00:00
Bitcode Add InaccessibleMemOnly and inaccessibleMemOrArgMemOnly attributes 2015-12-16 16:16:19 +00:00
CodeGen LiveInterval: A LiveRange is enough for ConnectedVNInfoEqClasses::Classify() 2016-01-08 01:16:35 +00:00
Config [autoconf] Fix MinGW build 2015-11-28 00:54:12 +00:00
DebugInfo Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
ExecutionEngine [SectionMemoryManager] Make better use of virtual memory 2015-12-16 11:13:23 +00:00
IR Remove static global GCNames from Function.cpp and move it to the Context 2016-01-08 02:28:20 +00:00
IRReader [ThinLTO] Metadata linking for imported functions 2015-12-17 17:14:09 +00:00
LibDriver LibDriver: Replace references to lld-link2 with lld-link. 2015-08-06 19:00:42 +00:00
LineEditor Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Linker [ThinLTO] Metadata linking for imported functions 2015-12-17 17:14:09 +00:00
LTO Rename variables to reflect linker split (NFC) 2015-12-18 19:28:59 +00:00
MC Added support for macro emission in dwarf (supporting DWARF version 4). 2016-01-07 14:28:20 +00:00
Object Use make_range to reduce mentions of iterator type. NFC 2015-12-06 05:08:07 +00:00
Option Convert Arg, ArgList, and Option to dump() to dbgs() rather than errs(). 2015-12-18 18:55:26 +00:00
Passes Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ProfileData [PGO] Fix a bug in InstProfWriter addRecord 2016-01-08 03:49:59 +00:00
Support [DominatorTree] Remove unnecessary map population. NFC. 2016-01-07 19:21:29 +00:00
TableGen [TableGen] Fix a typo in r256733. 2016-01-04 06:35:08 +00:00
Target [X86] Make hasFP constant time 2016-01-04 04:49:41 +00:00
Transforms [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
CMakeLists.txt
InitializePasses.h [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
LinkAllIR.h
LinkAllPasses.h [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
module.modulemap llvm/module.modulemap: AVR.def should be textual header. 2015-10-24 00:25:18 +00:00
module.modulemap.build
Pass.h Recommit r256952 "Filtering IR printing for print-after-all/print-before-all" 2016-01-06 22:55:03 +00:00
PassAnalysisSupport.h [PassManager] Tuning Memory Usage of AnalysisUsage 2015-12-08 00:10:56 +00:00
PassInfo.h Reformat partially. 2015-10-05 04:46:30 +00:00
PassRegistry.h Reorganize the C API headers to improve build times. 2015-12-18 01:46:52 +00:00
PassSupport.h Support: Clean up TSan annotations. 2015-08-18 22:31:24 +00:00