#
1d396832 |
| 10-Jun-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Interprocedural Register Allocation (IPRA): add a Transformation Pass
Adds a MachineFunctionPass that scans the body to find calls, and update the register mask with the one saved by the RegUsageInf
Interprocedural Register Allocation (IPRA): add a Transformation Pass
Adds a MachineFunctionPass that scans the body to find calls, and update the register mask with the one saved by the RegUsageInfoCollector analysis in PhysicalRegisterUsageInfo.
Patch by Vivek Pandya <vivekvpandya@gmail.com>
Differential Revision: http://reviews.llvm.org/D21180
llvm-svn: 272414
show more ...
|
#
bbacddfe |
| 10-Jun-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Interprocedural Register Allocation (IPRA) Analysis
Add an option to enable the analysis of MachineFunction register usage to extract the list of clobbered registers.
When enabled, the CodeGen orde
Interprocedural Register Allocation (IPRA) Analysis
Add an option to enable the analysis of MachineFunction register usage to extract the list of clobbered registers.
When enabled, the CodeGen order is changed to be bottom up on the Call Graph.
The analysis is split in two parts, RegUsageInfoCollector is the MachineFunction Pass that runs post-RA and collect the list of clobbered registers to produce a register mask.
An immutable pass, RegisterUsageInfo, stores the RegMask produced by RegUsageInfoCollector, and keep them available. A future tranformation pass will use this information to update every call-sites after instruction selection.
Patch by Vivek Pandya <vivekvpandya@gmail.com>
Differential Revision: http://reviews.llvm.org/D20769
llvm-svn: 272403
show more ...
|
#
8023233a |
| 09-Jun-2016 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
CodeGen: Allow verifier to run after MachineBlockPlacement
No tests break with this enabled.
llvm-svn: 272340
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
f9acacaa |
| 31-May-2016 |
Matthias Braun <matze@braunis.de> |
CodeGen: Refactor renameDisconnectedComponents() as a pass
Refactor LiveIntervals::renameDisconnectedComponents() to be a pass. Also change the name to "RenameIndependentSubregs":
- renameDisconnec
CodeGen: Refactor renameDisconnectedComponents() as a pass
Refactor LiveIntervals::renameDisconnectedComponents() to be a pass. Also change the name to "RenameIndependentSubregs":
- renameDisconnectedComponents() worked on a MachineFunction at a time so it is a natural candidate for a machine function pass.
- The algorithm is testable with a .mir test now.
- This also fixes a problem where the lazy renaming as part of the MachineScheduler introduced IMPLICIT_DEF instructions after the number of a nodes in a region were counted leading to a mismatch.
Differential Revision: http://reviews.llvm.org/D20507
llvm-svn: 271345
show more ...
|
#
1aaf87e9 |
| 17-May-2016 |
Derek Schuff <dschuff@google.com> |
Factor PrologEpilogInserter around spilling, frame finalization, and scavenging
PrologEpilogInserter has these 3 phases, which are related, but not all of them are needed by all targets. This patch
Factor PrologEpilogInserter around spilling, frame finalization, and scavenging
PrologEpilogInserter has these 3 phases, which are related, but not all of them are needed by all targets. This patch reorganizes PEI's varous functions around those phases for more clear separation. It also introduces a new TargetMachine hook, usesPhysRegsForPEI, which is true for non-virtual targets. When it is true, all the phases operate as before, and PEI requires the AllVRegsAllocated property on MachineFunctions. Otherwise, CSR spilling and scavenging are skipped and only prolog/epilog insertion/frame finalization is done.
Differential Revision: http://reviews.llvm.org/D18366
llvm-svn: 269750
show more ...
|
#
0663b61e |
| 10-May-2016 |
Matthias Braun <matze@braunis.de> |
TargetPassConfig: Set PrintMachineCode even if addMachinePasses() does not run.
llvm-svn: 269013
|
#
31d19d43 |
| 10-May-2016 |
Matthias Braun <matze@braunis.de> |
CodeGen: Move TargetPassConfig from Passes.h to an own header; NFC
Many files include Passes.h but only a fraction needs to know about the TargetPassConfig class. Move it into an own header. Also re
CodeGen: Move TargetPassConfig from Passes.h to an own header; NFC
Many files include Passes.h but only a fraction needs to know about the TargetPassConfig class. Move it into an own header. Also rename Passes.cpp to TargetPassConfig.cpp while we are at it.
llvm-svn: 269011
show more ...
|