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