xref: /llvm-project-15.0.7/llvm/lib/IR/Use.cpp (revision d3684c33)
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 Carruth void 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 Carruth unsigned Use::getOperandNo() const {
32387e059cSChandler Carruth   return this - getUser()->op_begin();
33387e059cSChandler Carruth }
34387e059cSChandler Carruth 
zap(Use * Start,const Use * Stop,bool del)35ef860a24SChandler Carruth void 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