diff options
author | Matthias Braun <matze@braunis.de> | 2016-08-23 21:19:49 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2016-08-23 21:19:49 +0000 |
commit | 90799ce8b2b1fc495235d0a774878ba0972b192d (patch) | |
tree | e3e45852e277aae93e47a6ca2cd54b099f6d1712 /llvm/lib/CodeGen/RegAllocFast.cpp | |
parent | f46d50e360ac909ac55adee05b87f7166abb3fdc (diff) | |
download | bcm5719-llvm-90799ce8b2b1fc495235d0a774878ba0972b192d.tar.gz bcm5719-llvm-90799ce8b2b1fc495235d0a774878ba0972b192d.zip |
MachineFunction: Introduce NoPHIs property
I want to compute the SSA property of .mir files automatically in
upcoming patches. The problem with this is that some inputs will be
reported as static single assignment with some passes claiming not to
support SSA form. In reality though those passes do not support PHI
instructions => Track the presence of PHI instructions separate from the
SSA property.
Differential Revision: https://reviews.llvm.org/D22719
llvm-svn: 279573
Diffstat (limited to 'llvm/lib/CodeGen/RegAllocFast.cpp')
-rw-r--r-- | llvm/lib/CodeGen/RegAllocFast.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/RegAllocFast.cpp b/llvm/lib/CodeGen/RegAllocFast.cpp index df6e6fb1c5b..febb29c9dd4 100644 --- a/llvm/lib/CodeGen/RegAllocFast.cpp +++ b/llvm/lib/CodeGen/RegAllocFast.cpp @@ -158,6 +158,11 @@ namespace { MachineFunctionPass::getAnalysisUsage(AU); } + MachineFunctionProperties getRequiredProperties() const override { + return MachineFunctionProperties().set( + MachineFunctionProperties::Property::NoPHIs); + } + MachineFunctionProperties getSetProperties() const override { return MachineFunctionProperties().set( MachineFunctionProperties::Property::AllVRegsAllocated); @@ -1093,8 +1098,6 @@ bool RAFast::runOnMachineFunction(MachineFunction &Fn) { UsedInInstr.clear(); UsedInInstr.setUniverse(TRI->getNumRegUnits()); - assert(!MRI->isSSA() && "regalloc requires leaving SSA"); - // initialize the virtual->physical register map to have a 'null' // mapping for all virtual registers StackSlotForVirtReg.resize(MRI->getNumVirtRegs()); |