1 //===- Use.cpp ------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/SandboxIR/Use.h" 10 #include "llvm/SandboxIR/Context.h" 11 #include "llvm/SandboxIR/User.h" 12 13 namespace llvm::sandboxir { 14 15 Value *Use::get() const { return Ctx->getValue(LLVMUse->get()); } 16 17 void Use::set(Value *V) { 18 Ctx->getTracker().emplaceIfTracking<UseSet>(*this); 19 LLVMUse->set(V->Val); 20 } 21 22 unsigned Use::getOperandNo() const { return Usr->getUseOperandNo(*this); } 23 24 void Use::swap(Use &OtherUse) { 25 Ctx->getTracker().emplaceIfTracking<UseSwap>(*this, OtherUse); 26 LLVMUse->swap(*OtherUse.LLVMUse); 27 } 28 29 #ifndef NDEBUG 30 void Use::dumpOS(raw_ostream &OS) const { 31 Value *Def = nullptr; 32 if (LLVMUse == nullptr) 33 OS << "<null> LLVM Use! "; 34 else 35 Def = Ctx->getValue(LLVMUse->get()); 36 OS << "Def: "; 37 if (Def == nullptr) 38 OS << "NULL"; 39 else 40 OS << *Def; 41 OS << "\n"; 42 43 OS << "User: "; 44 if (Usr == nullptr) 45 OS << "NULL"; 46 else 47 OS << *Usr; 48 OS << "\n"; 49 50 OS << "OperandNo: "; 51 if (Usr == nullptr) 52 OS << "N/A"; 53 else 54 OS << getOperandNo(); 55 OS << "\n"; 56 } 57 58 void Use::dump() const { dumpOS(dbgs()); } 59 #endif // NDEBUG 60 61 } // namespace llvm::sandboxir 62