summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-09-22 21:39:31 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-09-22 21:39:31 +0000
commit91fb536a345dc268e5b73dbddb9bee4cba87b28f (patch)
tree56a46fe2bccf2758765a8e7061b166e709f26fe3 /include
parent17470bee5fd18bb2eae7825dae535c060a34ee7d (diff)
downloadllvm-91fb536a345dc268e5b73dbddb9bee4cba87b28f.tar.gz
llvm-91fb536a345dc268e5b73dbddb9bee4cba87b28f.tar.bz2
llvm-91fb536a345dc268e5b73dbddb9bee4cba87b28f.tar.xz
Add a MinNumRegs argument to MRI::constrainRegClass().
The function will refuse to use a register class with fewer registers than MinNumRegs. This can be used by clients to avoid accidentally increase register pressure too much. The default value of MinNumRegs=0 doesn't affect how constrainRegClass() works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140339 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/CodeGen/MachineRegisterInfo.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/MachineRegisterInfo.h b/include/llvm/CodeGen/MachineRegisterInfo.h
index 5eeaa28747..db9352ff88 100644
--- a/include/llvm/CodeGen/MachineRegisterInfo.h
+++ b/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -215,13 +215,15 @@ public:
void setRegClass(unsigned Reg, const TargetRegisterClass *RC);
/// constrainRegClass - Constrain the register class of the specified virtual
- /// register to be a common subclass of RC and the current register class.
- /// Return the new register class, or NULL if no such class exists.
+ /// register to be a common subclass of RC and the current register class,
+ /// but only if the new class has at least MinNumRegs registers. Return the
+ /// new register class, or NULL if no such class exists.
/// This should only be used when the constraint is known to be trivial, like
/// GR32 -> GR32_NOSP. Beware of increasing register pressure.
///
const TargetRegisterClass *constrainRegClass(unsigned Reg,
- const TargetRegisterClass *RC);
+ const TargetRegisterClass *RC,
+ unsigned MinNumRegs = 0);
/// recomputeRegClass - Try to find a legal super-class of Reg's register
/// class that still satisfies the constraints from the instructions using