]> granicus.if.org Git - llvm/commit
CodeGen: Remove pipeline dependencies on StackProtector; NFC
authorMatthias Braun <matze@braunis.de>
Fri, 13 Jul 2018 00:08:38 +0000 (00:08 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 13 Jul 2018 00:08:38 +0000 (00:08 +0000)
commitd79789afc64bdd2ef879c97f97848f436bf0692d
tree478f4841e1a79b702ae3c6023392cc2b4ca302fc
parent674f0a117445cc5c1c8fd0ed51ff2377197ede1f
CodeGen: Remove pipeline dependencies on StackProtector; NFC

This re-applies r336929 with a fix to accomodate for the Mips target
scheduling multiple SelectionDAG instances into the pass pipeline.

PrologEpilogInserter and StackColoring depend on the StackProtector analysis
being alive from the point it is run until PEI, which requires that they are all
scheduled in the same FunctionPassManager. Inserting a (machine) ModulePass
between StackProtector and PEI results in these passes being in separate
FunctionPassManagers and the StackProtector is not available for PEI.

PEI and StackColoring don't use much information from the StackProtector pass,
so transfering the required information to MachineFrameInfo is cleaner than
keeping the StackProtector pass around. This commit moves the SSP layout
information to MFI instead of keeping it in the pass.

This patch set (D37580, D37581, D37582, D37583, D37584, D37585, D37586, D37587)
is a first draft of the pagerando implementation described in
http://lists.llvm.org/pipermail/llvm-dev/2017-June/113794.html.

Patch by Stephen Crane <sjc@immunant.com>

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336964 91177308-0d34-0410-b5e6-96231b3b80d8
20 files changed:
include/llvm/CodeGen/GlobalISel/Localizer.h
include/llvm/CodeGen/GlobalISel/Utils.h
include/llvm/CodeGen/MachineFrameInfo.h
include/llvm/CodeGen/StackProtector.h
lib/CodeGen/GlobalISel/IRTranslator.cpp
lib/CodeGen/GlobalISel/InstructionSelect.cpp
lib/CodeGen/GlobalISel/Legalizer.cpp
lib/CodeGen/GlobalISel/Localizer.cpp
lib/CodeGen/GlobalISel/RegBankSelect.cpp
lib/CodeGen/GlobalISel/Utils.cpp
lib/CodeGen/LocalStackSlotAllocation.cpp
lib/CodeGen/MachineFunctionPass.cpp
lib/CodeGen/PrologEpilogInserter.cpp
lib/CodeGen/ResetMachineFunctionPass.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
lib/CodeGen/StackColoring.cpp
lib/CodeGen/StackProtector.cpp
lib/Target/Mips/MipsISelDAGToDAG.cpp
lib/Target/Mips/MipsISelDAGToDAG.h
lib/Target/Mips/MipsModuleISelDAGToDAG.cpp