//===- CodeGen/MachineConstantPool.h - Abstract Constant Pool ---*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // /// @file /// This file declares the MachineConstantPool class which is an abstract /// constant pool to keep track of constants referenced by a function. // //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_MACHINECONSTANTPOOL_H #define LLVM_CODEGEN_MACHINECONSTANTPOOL_H #include "llvm/ADT/DenseSet.h" #include "llvm/MC/SectionKind.h" #include "llvm/Support/Alignment.h" #include <climits> #include <vector> namespace llvm { class Constant; class DataLayout; class FoldingSetNodeID; class MachineConstantPool; class raw_ostream; class Type; /// Abstract base class for all machine specific constantpool value subclasses. /// class MachineConstantPoolValue { … }; inline raw_ostream &operator<<(raw_ostream &OS, const MachineConstantPoolValue &V) { … } /// This class is a data container for one entry in a MachineConstantPool. /// It contains a pointer to the value and an offset from the start of /// the constant pool. /// An entry in a MachineConstantPool class MachineConstantPoolEntry { … }; /// The MachineConstantPool class keeps track of constants referenced by a /// function which must be spilled to memory. This is used for constants which /// are unable to be used directly as operands to instructions, which typically /// include floating point and large integer constants. /// /// Instructions reference the address of these constant pool constants through /// the use of MO_ConstantPoolIndex values. When emitting assembly or machine /// code, these virtual address references are converted to refer to the /// address of the function constant pool values. /// The machine constant pool. class MachineConstantPool { … }; } // end namespace llvm #endif // LLVM_CODEGEN_MACHINECONSTANTPOOL_H