[coro] Make Spill a proper struct instead of deriving from pair.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 31 Oct 2017 19:22:55 +0000 (19:22 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 31 Oct 2017 19:22:55 +0000 (19:22 +0000)
No functionality change.

llvm-svn: 317027

llvm/lib/Transforms/Coroutines/CoroFrame.cpp

index d192fa6..6334256 100644 (file)
@@ -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 *>;
-
-  Spill(Value *Def, User *U) : base(Def, cast<Instruction>(U)) {}
-
-  Value *def() const { return first; }
-  Instruction *user() const { return second; }
-  BasicBlock *userBlock() const { return second->getParent(); }
+namespace {
+class Spill {
+  Value *Def;
+  Instruction *User;
 
-  std::pair<Value *, BasicBlock *> getKey() const {
-    return {def(), userBlock()};
-  }
+public:
+  Spill(Value *Def, llvm::User *U) : Def(Def), User(cast<Instruction>(U)) {}
 
-  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.