summaryrefslogtreecommitdiff
path: root/lib/CodeGen/AggressiveAntiDepBreaker.h
diff options
context:
space:
mode:
authorDavid Goodwin <david_goodwin@apple.com>2009-11-13 19:52:48 +0000
committerDavid Goodwin <david_goodwin@apple.com>2009-11-13 19:52:48 +0000
commit87d21b92fc42f6b3bd8567a83fc5b5191c1205e5 (patch)
tree9379a49fd55d087f15cd2fff180aefc2286bcafd /lib/CodeGen/AggressiveAntiDepBreaker.h
parenta8173b934fdfdc7a3ca543a0734b7c8fa1969366 (diff)
downloadllvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.gz
llvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.bz2
llvm-87d21b92fc42f6b3bd8567a83fc5b5191c1205e5.tar.xz
Allow target to specify regclass for which antideps will only be broken along the critical path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AggressiveAntiDepBreaker.h')
-rw-r--r--lib/CodeGen/AggressiveAntiDepBreaker.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/CodeGen/AggressiveAntiDepBreaker.h b/lib/CodeGen/AggressiveAntiDepBreaker.h
index fb5b869fcb..e5c9a7bb3a 100644
--- a/lib/CodeGen/AggressiveAntiDepBreaker.h
+++ b/lib/CodeGen/AggressiveAntiDepBreaker.h
@@ -86,8 +86,11 @@ namespace llvm {
unsigned GetGroup(unsigned Reg);
// GetGroupRegs - Return a vector of the registers belonging to a
- // group.
- void GetGroupRegs(unsigned Group, std::vector<unsigned> &Regs);
+ // group. If RegRefs is non-NULL then only included referenced registers.
+ void GetGroupRegs(
+ unsigned Group,
+ std::vector<unsigned> &Regs,
+ std::multimap<unsigned, AggressiveAntiDepState::RegisterReference> *RegRefs);
// UnionGroups - Union Reg1's and Reg2's groups to form a new
// group. Return the index of the GroupNode representing the
@@ -113,7 +116,11 @@ namespace llvm {
/// AllocatableSet - The set of allocatable registers.
/// We'll be ignoring anti-dependencies on non-allocatable registers,
/// because they may not be safe to break.
- BitVector AllocatableSet;
+ const BitVector AllocatableSet;
+
+ /// CriticalPathSet - The set of registers that should only be
+ /// renamed if they are on the critical path.
+ BitVector CriticalPathSet;
/// State - The state used to identify and rename anti-dependence
/// registers.
@@ -126,7 +133,7 @@ namespace llvm {
public:
AggressiveAntiDepBreaker(MachineFunction& MFi,
- TargetSubtarget::ExcludedRCVector& ExcludedRCs);
+ TargetSubtarget::RegClassVector& CriticalPathRCs);
~AggressiveAntiDepBreaker();
/// GetMaxTrials - As anti-dependencies are broken, additional