62 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/SandboxIR/Use.h"10#include "llvm/SandboxIR/Context.h"11#include "llvm/SandboxIR/User.h"12 13namespace llvm::sandboxir {14 15Value *Use::get() const { return Ctx->getValue(LLVMUse->get()); }16 17void Use::set(Value *V) {18 Ctx->getTracker().emplaceIfTracking<UseSet>(*this);19 LLVMUse->set(V->Val);20}21 22unsigned Use::getOperandNo() const { return Usr->getUseOperandNo(*this); }23 24void Use::swap(Use &OtherUse) {25 Ctx->getTracker().emplaceIfTracking<UseSwap>(*this, OtherUse);26 LLVMUse->swap(*OtherUse.LLVMUse);27}28 29#ifndef NDEBUG30void Use::dumpOS(raw_ostream &OS) const {31 Value *Def = nullptr;32 if (LLVMUse == nullptr)33 OS << "<null> LLVM Use! ";34 else35 Def = Ctx->getValue(LLVMUse->get());36 OS << "Def: ";37 if (Def == nullptr)38 OS << "NULL";39 else40 OS << *Def;41 OS << "\n";42 43 OS << "User: ";44 if (Usr == nullptr)45 OS << "NULL";46 else47 OS << *Usr;48 OS << "\n";49 50 OS << "OperandNo: ";51 if (Usr == nullptr)52 OS << "N/A";53 else54 OS << getOperandNo();55 OS << "\n";56}57 58void Use::dump() const { dumpOS(dbgs()); }59#endif // NDEBUG60 61} // namespace llvm::sandboxir62