//===-- User.cpp - Implement the User class -------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/IR/User.h" #include "llvm/IR/Constant.h" #include "llvm/IR/GlobalValue.h" #include "llvm/IR/IntrinsicInst.h" namespace llvm { class BasicBlock; //===----------------------------------------------------------------------===// // User Class //===----------------------------------------------------------------------===// bool User::replaceUsesOfWith(Value *From, Value *To) { … } //===----------------------------------------------------------------------===// // User allocHungoffUses Implementation //===----------------------------------------------------------------------===// void User::allocHungoffUses(unsigned N, bool IsPhi) { … } void User::growHungoffUses(unsigned NewNumUses, bool IsPhi) { … } // This is a private struct used by `User` to track the co-allocated descriptor // section. struct DescriptorInfo { … }; ArrayRef<const uint8_t> User::getDescriptor() const { … } MutableArrayRef<uint8_t> User::getDescriptor() { … } bool User::isDroppable() const { … } //===----------------------------------------------------------------------===// // User operator new Implementations //===----------------------------------------------------------------------===// void *User::allocateFixedOperandUser(size_t Size, unsigned Us, unsigned DescBytes) { … } void *User::operator new(size_t Size, IntrusiveOperandsAllocMarker allocTrait) { … } void *User::operator new(size_t Size, IntrusiveOperandsAndDescriptorAllocMarker allocTrait) { … } void *User::operator new(size_t Size, HungOffOperandsAllocMarker) { … } //===----------------------------------------------------------------------===// // User operator delete Implementation //===----------------------------------------------------------------------===// // Repress memory sanitization, due to use-after-destroy by operator // delete. Bug report 24578 identifies this issue. LLVM_NO_SANITIZE_MEMORY_ATTRIBUTE void User::operator delete(void *Usr) { … } } // namespace llvm