forked from OSchip/llvm-project
[coro] Make Spill a proper struct instead of deriving from pair.
No functionality change. llvm-svn: 317027
This commit is contained in:
parent
95c142e208
commit
992fc4ea2d
|
|
@ -261,21 +261,19 @@ SuspendCrossingInfo::SuspendCrossingInfo(Function &F, coro::Shape &Shape)
|
|||
// We build up the list of spills for every case where a use is separated
|
||||
// from the definition by a suspend point.
|
||||
|
||||
struct Spill : std::pair<Value *, Instruction *> {
|
||||
using base = std::pair<Value *, Instruction *>;
|
||||
namespace {
|
||||
class Spill {
|
||||
Value *Def;
|
||||
Instruction *User;
|
||||
|
||||
Spill(Value *Def, User *U) : base(Def, cast<Instruction>(U)) {}
|
||||
public:
|
||||
Spill(Value *Def, llvm::User *U) : Def(Def), User(cast<Instruction>(U)) {}
|
||||
|
||||
Value *def() const { return first; }
|
||||
Instruction *user() const { return second; }
|
||||
BasicBlock *userBlock() const { return second->getParent(); }
|
||||
|
||||
std::pair<Value *, BasicBlock *> getKey() const {
|
||||
return {def(), userBlock()};
|
||||
}
|
||||
|
||||
bool operator<(Spill const &rhs) const { return getKey() < rhs.getKey(); }
|
||||
Value *def() const { return Def; }
|
||||
Instruction *user() const { return User; }
|
||||
BasicBlock *userBlock() const { return User->getParent(); }
|
||||
};
|
||||
} // namespace
|
||||
|
||||
// Note that there may be more than one record with the same value of Def in
|
||||
// the SpillInfo vector.
|
||||
|
|
|
|||
Loading…
Reference in New Issue