1ef860a24SChandler Carruth //===-- Use.cpp - Implement the Use class ---------------------------------===// 2ef860a24SChandler Carruth // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6ef860a24SChandler Carruth // 7ef860a24SChandler Carruth //===----------------------------------------------------------------------===// 8ef860a24SChandler Carruth 906d49183SChandler Carruth #include "llvm/IR/Use.h" 10387e059cSChandler Carruth #include "llvm/IR/User.h" 11ef860a24SChandler Carruth 12ef860a24SChandler Carruth namespace llvm { 13ef860a24SChandler Carruth swap(Use & RHS)14ef860a24SChandler Carruthvoid Use::swap(Use &RHS) { 154ffd9d25SChandler Carruth if (Val == RHS.Val) 164ffd9d25SChandler Carruth return; 17ef860a24SChandler Carruth 18*5e5bda74SJay Foad std::swap(Val, RHS.Val); 19*5e5bda74SJay Foad std::swap(Next, RHS.Next); 20*5e5bda74SJay Foad std::swap(Prev, RHS.Prev); 214ffd9d25SChandler Carruth 22*5e5bda74SJay Foad *Prev = this; 23*5e5bda74SJay Foad if (Next) 24*5e5bda74SJay Foad Next->Prev = &Next; 25ef860a24SChandler Carruth 26*5e5bda74SJay Foad *RHS.Prev = &RHS; 27*5e5bda74SJay Foad if (RHS.Next) 28*5e5bda74SJay Foad RHS.Next->Prev = &RHS.Next; 29ef860a24SChandler Carruth } 30ef860a24SChandler Carruth getOperandNo() const31387e059cSChandler Carruthunsigned Use::getOperandNo() const { 32387e059cSChandler Carruth return this - getUser()->op_begin(); 33387e059cSChandler Carruth } 34387e059cSChandler Carruth zap(Use * Start,const Use * Stop,bool del)35ef860a24SChandler Carruthvoid Use::zap(Use *Start, const Use *Stop, bool del) { 36ef860a24SChandler Carruth while (Start != Stop) 37ef860a24SChandler Carruth (--Stop)->~Use(); 38ef860a24SChandler Carruth if (del) 39ef860a24SChandler Carruth ::operator delete(Start); 40ef860a24SChandler Carruth } 41ef860a24SChandler Carruth 428b52037cSSimon Pilgrim } // namespace llvm 43