//===- ARMConstantPoolValue.h - ARM constantpool value ----------*- 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 // //===----------------------------------------------------------------------===// // // This file implements the ARM specific constantpool value class. // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H #define LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/iterator_range.h" #include "llvm/CodeGen/MachineConstantPool.h" #include "llvm/Support/Casting.h" #include <string> #include <vector> namespace llvm { class BlockAddress; class Constant; class GlobalValue; class GlobalVariable; class LLVMContext; class MachineBasicBlock; class raw_ostream; class Type; namespace ARMCP { enum ARMCPKind { … }; enum ARMCPModifier { … }; } // end namespace ARMCP /// ARMConstantPoolValue - ARM specific constantpool value. This is used to /// represent PC-relative displacement between the address of the load /// instruction and the constant being loaded, i.e. (&GV-(LPIC+8)). class ARMConstantPoolValue : public MachineConstantPoolValue { … }; inline raw_ostream &operator<<(raw_ostream &O, const ARMConstantPoolValue &V) { … } /// ARMConstantPoolConstant - ARM-specific constant pool values for Constants, /// Functions, and BlockAddresses. class ARMConstantPoolConstant : public ARMConstantPoolValue { … }; /// ARMConstantPoolSymbol - ARM-specific constantpool values for external /// symbols. class ARMConstantPoolSymbol : public ARMConstantPoolValue { … }; /// ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic /// block. class ARMConstantPoolMBB : public ARMConstantPoolValue { … }; } // end namespace llvm #endif // LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H