Now that we are deleting unused live intervals during allocation, pointers may be reused.
Use the virtual register number as a cache tag instead. They are not reused. llvm-svn: 127561
This commit is contained in:
parent
43a87501b3
commit
e1539cc5b6
|
@ -163,7 +163,7 @@ public:
|
||||||
bool CheckedFirstInterference;
|
bool CheckedFirstInterference;
|
||||||
bool SeenAllInterferences;
|
bool SeenAllInterferences;
|
||||||
bool SeenUnspillableVReg;
|
bool SeenUnspillableVReg;
|
||||||
unsigned Tag;
|
unsigned Tag, VTag;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Query(): LiveUnion(), VirtReg() {}
|
Query(): LiveUnion(), VirtReg() {}
|
||||||
|
@ -181,11 +181,12 @@ public:
|
||||||
SeenAllInterferences = false;
|
SeenAllInterferences = false;
|
||||||
SeenUnspillableVReg = false;
|
SeenUnspillableVReg = false;
|
||||||
Tag = 0;
|
Tag = 0;
|
||||||
|
VTag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void init(LiveInterval *VReg, LiveIntervalUnion *LIU) {
|
void init(LiveInterval *VReg, LiveIntervalUnion *LIU) {
|
||||||
assert(VReg && LIU && "Invalid arguments");
|
assert(VReg && LIU && "Invalid arguments");
|
||||||
if (VirtReg == VReg && LiveUnion == LIU && !LIU->changedSince(Tag)) {
|
if (VReg->reg == VTag && LiveUnion == LIU && !LIU->changedSince(Tag)) {
|
||||||
// Retain cached results, e.g. firstInterference.
|
// Retain cached results, e.g. firstInterference.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -193,6 +194,7 @@ public:
|
||||||
LiveUnion = LIU;
|
LiveUnion = LIU;
|
||||||
VirtReg = VReg;
|
VirtReg = VReg;
|
||||||
Tag = LIU->getTag();
|
Tag = LIU->getTag();
|
||||||
|
VTag = VReg->reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
LiveInterval &virtReg() const {
|
LiveInterval &virtReg() const {
|
||||||
|
|
Loading…
Reference in New Issue