aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:45:01 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:01 +0300
commit2d37894b1b037cf24231090eda8589bbb44fb6fc (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp
parent718c552901d703c502ccbefdfc3c9028d608b947 (diff)
downloadydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp')
-rw-r--r--contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp596
1 files changed, 298 insertions, 298 deletions
diff --git a/contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp b/contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp
index 5791a10db4..c1df7ef43c 100644
--- a/contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp
+++ b/contrib/libs/llvm12/lib/Target/ARM/ARMConstantPoolValue.cpp
@@ -1,298 +1,298 @@
-//===- ARMConstantPoolValue.cpp - ARM constantpool value ------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-#include "ARMConstantPoolValue.h"
-#include "llvm/ADT/FoldingSet.h"
-#include "llvm/CodeGen/MachineBasicBlock.h"
-#include "llvm/Config/llvm-config.h"
-#include "llvm/IR/Constant.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/GlobalValue.h"
-#include "llvm/IR/GlobalVariable.h"
-#include "llvm/IR/Type.h"
-#include "llvm/Support/Casting.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace llvm;
-
-//===----------------------------------------------------------------------===//
-// ARMConstantPoolValue
-//===----------------------------------------------------------------------===//
-
-ARMConstantPoolValue::ARMConstantPoolValue(Type *Ty, unsigned id,
- ARMCP::ARMCPKind kind,
- unsigned char PCAdj,
- ARMCP::ARMCPModifier modifier,
- bool addCurrentAddress)
- : MachineConstantPoolValue(Ty), LabelId(id), Kind(kind),
- PCAdjust(PCAdj), Modifier(modifier),
- AddCurrentAddress(addCurrentAddress) {}
-
-ARMConstantPoolValue::ARMConstantPoolValue(LLVMContext &C, unsigned id,
- ARMCP::ARMCPKind kind,
- unsigned char PCAdj,
- ARMCP::ARMCPModifier modifier,
- bool addCurrentAddress)
- : MachineConstantPoolValue((Type*)Type::getInt32Ty(C)),
- LabelId(id), Kind(kind), PCAdjust(PCAdj), Modifier(modifier),
- AddCurrentAddress(addCurrentAddress) {}
-
-ARMConstantPoolValue::~ARMConstantPoolValue() = default;
-
-StringRef ARMConstantPoolValue::getModifierText() const {
- switch (Modifier) {
- // FIXME: Are these case sensitive? It'd be nice to lower-case all the
- // strings if that's legal.
- case ARMCP::no_modifier:
- return "none";
- case ARMCP::TLSGD:
- return "tlsgd";
- case ARMCP::GOT_PREL:
- return "GOT_PREL";
- case ARMCP::GOTTPOFF:
- return "gottpoff";
- case ARMCP::TPOFF:
- return "tpoff";
- case ARMCP::SBREL:
- return "SBREL";
- case ARMCP::SECREL:
- return "secrel32";
- }
- llvm_unreachable("Unknown modifier!");
-}
-
-int ARMConstantPoolValue::getExistingMachineCPValue(MachineConstantPool *CP,
- Align Alignment) {
- llvm_unreachable("Shouldn't be calling this directly!");
-}
-
-void
-ARMConstantPoolValue::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
- ID.AddInteger(LabelId);
- ID.AddInteger(PCAdjust);
-}
-
-bool
-ARMConstantPoolValue::hasSameValue(ARMConstantPoolValue *ACPV) {
- if (ACPV->Kind == Kind &&
- ACPV->PCAdjust == PCAdjust &&
- ACPV->Modifier == Modifier &&
- ACPV->LabelId == LabelId &&
- ACPV->AddCurrentAddress == AddCurrentAddress) {
- // Two PC relative constpool entries containing the same GV address or
- // external symbols. FIXME: What about blockaddress?
- if (Kind == ARMCP::CPValue || Kind == ARMCP::CPExtSymbol)
- return true;
- }
- return false;
-}
-
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-LLVM_DUMP_METHOD void ARMConstantPoolValue::dump() const {
- errs() << " " << *this;
-}
-#endif
-
-void ARMConstantPoolValue::print(raw_ostream &O) const {
- if (Modifier) O << "(" << getModifierText() << ")";
- if (PCAdjust != 0) {
- O << "-(LPC" << LabelId << "+" << (unsigned)PCAdjust;
- if (AddCurrentAddress) O << "-.";
- O << ")";
- }
-}
-
-//===----------------------------------------------------------------------===//
-// ARMConstantPoolConstant
-//===----------------------------------------------------------------------===//
-
-ARMConstantPoolConstant::ARMConstantPoolConstant(Type *Ty,
- const Constant *C,
- unsigned ID,
- ARMCP::ARMCPKind Kind,
- unsigned char PCAdj,
- ARMCP::ARMCPModifier Modifier,
- bool AddCurrentAddress)
- : ARMConstantPoolValue(Ty, ID, Kind, PCAdj, Modifier, AddCurrentAddress),
- CVal(C) {}
-
-ARMConstantPoolConstant::ARMConstantPoolConstant(const Constant *C,
- unsigned ID,
- ARMCP::ARMCPKind Kind,
- unsigned char PCAdj,
- ARMCP::ARMCPModifier Modifier,
- bool AddCurrentAddress)
- : ARMConstantPoolValue((Type*)C->getType(), ID, Kind, PCAdj, Modifier,
- AddCurrentAddress),
- CVal(C) {}
-
-ARMConstantPoolConstant::ARMConstantPoolConstant(const GlobalVariable *GV,
- const Constant *C)
- : ARMConstantPoolValue((Type *)C->getType(), 0, ARMCP::CPPromotedGlobal, 0,
- ARMCP::no_modifier, false), CVal(C) {
- GVars.insert(GV);
-}
-
-ARMConstantPoolConstant *
-ARMConstantPoolConstant::Create(const Constant *C, unsigned ID) {
- return new ARMConstantPoolConstant(C, ID, ARMCP::CPValue, 0,
- ARMCP::no_modifier, false);
-}
-
-ARMConstantPoolConstant *
-ARMConstantPoolConstant::Create(const GlobalVariable *GVar,
- const Constant *Initializer) {
- return new ARMConstantPoolConstant(GVar, Initializer);
-}
-
-ARMConstantPoolConstant *
-ARMConstantPoolConstant::Create(const GlobalValue *GV,
- ARMCP::ARMCPModifier Modifier) {
- return new ARMConstantPoolConstant((Type*)Type::getInt32Ty(GV->getContext()),
- GV, 0, ARMCP::CPValue, 0,
- Modifier, false);
-}
-
-ARMConstantPoolConstant *
-ARMConstantPoolConstant::Create(const Constant *C, unsigned ID,
- ARMCP::ARMCPKind Kind, unsigned char PCAdj) {
- return new ARMConstantPoolConstant(C, ID, Kind, PCAdj,
- ARMCP::no_modifier, false);
-}
-
-ARMConstantPoolConstant *
-ARMConstantPoolConstant::Create(const Constant *C, unsigned ID,
- ARMCP::ARMCPKind Kind, unsigned char PCAdj,
- ARMCP::ARMCPModifier Modifier,
- bool AddCurrentAddress) {
- return new ARMConstantPoolConstant(C, ID, Kind, PCAdj, Modifier,
- AddCurrentAddress);
-}
-
-const GlobalValue *ARMConstantPoolConstant::getGV() const {
- return dyn_cast_or_null<GlobalValue>(CVal);
-}
-
-const BlockAddress *ARMConstantPoolConstant::getBlockAddress() const {
- return dyn_cast_or_null<BlockAddress>(CVal);
-}
-
-int ARMConstantPoolConstant::getExistingMachineCPValue(MachineConstantPool *CP,
- Align Alignment) {
- int index =
- getExistingMachineCPValueImpl<ARMConstantPoolConstant>(CP, Alignment);
- if (index != -1) {
- auto *CPV = static_cast<ARMConstantPoolValue*>(
- CP->getConstants()[index].Val.MachineCPVal);
- auto *Constant = cast<ARMConstantPoolConstant>(CPV);
- Constant->GVars.insert(GVars.begin(), GVars.end());
- }
- return index;
-}
-
-bool ARMConstantPoolConstant::hasSameValue(ARMConstantPoolValue *ACPV) {
- const ARMConstantPoolConstant *ACPC = dyn_cast<ARMConstantPoolConstant>(ACPV);
- return ACPC && ACPC->CVal == CVal && ARMConstantPoolValue::hasSameValue(ACPV);
-}
-
-void ARMConstantPoolConstant::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
- ID.AddPointer(CVal);
- for (const auto *GV : GVars)
- ID.AddPointer(GV);
- ARMConstantPoolValue::addSelectionDAGCSEId(ID);
-}
-
-void ARMConstantPoolConstant::print(raw_ostream &O) const {
- O << CVal->getName();
- ARMConstantPoolValue::print(O);
-}
-
-//===----------------------------------------------------------------------===//
-// ARMConstantPoolSymbol
-//===----------------------------------------------------------------------===//
-
-ARMConstantPoolSymbol::ARMConstantPoolSymbol(LLVMContext &C, StringRef s,
- unsigned id, unsigned char PCAdj,
- ARMCP::ARMCPModifier Modifier,
- bool AddCurrentAddress)
- : ARMConstantPoolValue(C, id, ARMCP::CPExtSymbol, PCAdj, Modifier,
- AddCurrentAddress),
- S(std::string(s)) {}
-
-ARMConstantPoolSymbol *ARMConstantPoolSymbol::Create(LLVMContext &C,
- StringRef s, unsigned ID,
- unsigned char PCAdj) {
- return new ARMConstantPoolSymbol(C, s, ID, PCAdj, ARMCP::no_modifier, false);
-}
-
-int ARMConstantPoolSymbol::getExistingMachineCPValue(MachineConstantPool *CP,
- Align Alignment) {
- return getExistingMachineCPValueImpl<ARMConstantPoolSymbol>(CP, Alignment);
-}
-
-bool ARMConstantPoolSymbol::hasSameValue(ARMConstantPoolValue *ACPV) {
- const ARMConstantPoolSymbol *ACPS = dyn_cast<ARMConstantPoolSymbol>(ACPV);
- return ACPS && ACPS->S == S && ARMConstantPoolValue::hasSameValue(ACPV);
-}
-
-void ARMConstantPoolSymbol::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
- ID.AddString(S);
- ARMConstantPoolValue::addSelectionDAGCSEId(ID);
-}
-
-void ARMConstantPoolSymbol::print(raw_ostream &O) const {
- O << S;
- ARMConstantPoolValue::print(O);
-}
-
-//===----------------------------------------------------------------------===//
-// ARMConstantPoolMBB
-//===----------------------------------------------------------------------===//
-
-ARMConstantPoolMBB::ARMConstantPoolMBB(LLVMContext &C,
- const MachineBasicBlock *mbb,
- unsigned id, unsigned char PCAdj,
- ARMCP::ARMCPModifier Modifier,
- bool AddCurrentAddress)
- : ARMConstantPoolValue(C, id, ARMCP::CPMachineBasicBlock, PCAdj,
- Modifier, AddCurrentAddress),
- MBB(mbb) {}
-
-ARMConstantPoolMBB *ARMConstantPoolMBB::Create(LLVMContext &C,
- const MachineBasicBlock *mbb,
- unsigned ID,
- unsigned char PCAdj) {
- return new ARMConstantPoolMBB(C, mbb, ID, PCAdj, ARMCP::no_modifier, false);
-}
-
-int ARMConstantPoolMBB::getExistingMachineCPValue(MachineConstantPool *CP,
- Align Alignment) {
- return getExistingMachineCPValueImpl<ARMConstantPoolMBB>(CP, Alignment);
-}
-
-bool ARMConstantPoolMBB::hasSameValue(ARMConstantPoolValue *ACPV) {
- const ARMConstantPoolMBB *ACPMBB = dyn_cast<ARMConstantPoolMBB>(ACPV);
- return ACPMBB && ACPMBB->MBB == MBB &&
- ARMConstantPoolValue::hasSameValue(ACPV);
-}
-
-void ARMConstantPoolMBB::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
- ID.AddPointer(MBB);
- ARMConstantPoolValue::addSelectionDAGCSEId(ID);
-}
-
-void ARMConstantPoolMBB::print(raw_ostream &O) const {
- O << printMBBReference(*MBB);
- ARMConstantPoolValue::print(O);
-}
+//===- ARMConstantPoolValue.cpp - ARM constantpool value ------------------===//
+//
+// 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.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ARMConstantPoolValue.h"
+#include "llvm/ADT/FoldingSet.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/Config/llvm-config.h"
+#include "llvm/IR/Constant.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/GlobalValue.h"
+#include "llvm/IR/GlobalVariable.h"
+#include "llvm/IR/Type.h"
+#include "llvm/Support/Casting.h"
+#include "llvm/Support/Compiler.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+//===----------------------------------------------------------------------===//
+// ARMConstantPoolValue
+//===----------------------------------------------------------------------===//
+
+ARMConstantPoolValue::ARMConstantPoolValue(Type *Ty, unsigned id,
+ ARMCP::ARMCPKind kind,
+ unsigned char PCAdj,
+ ARMCP::ARMCPModifier modifier,
+ bool addCurrentAddress)
+ : MachineConstantPoolValue(Ty), LabelId(id), Kind(kind),
+ PCAdjust(PCAdj), Modifier(modifier),
+ AddCurrentAddress(addCurrentAddress) {}
+
+ARMConstantPoolValue::ARMConstantPoolValue(LLVMContext &C, unsigned id,
+ ARMCP::ARMCPKind kind,
+ unsigned char PCAdj,
+ ARMCP::ARMCPModifier modifier,
+ bool addCurrentAddress)
+ : MachineConstantPoolValue((Type*)Type::getInt32Ty(C)),
+ LabelId(id), Kind(kind), PCAdjust(PCAdj), Modifier(modifier),
+ AddCurrentAddress(addCurrentAddress) {}
+
+ARMConstantPoolValue::~ARMConstantPoolValue() = default;
+
+StringRef ARMConstantPoolValue::getModifierText() const {
+ switch (Modifier) {
+ // FIXME: Are these case sensitive? It'd be nice to lower-case all the
+ // strings if that's legal.
+ case ARMCP::no_modifier:
+ return "none";
+ case ARMCP::TLSGD:
+ return "tlsgd";
+ case ARMCP::GOT_PREL:
+ return "GOT_PREL";
+ case ARMCP::GOTTPOFF:
+ return "gottpoff";
+ case ARMCP::TPOFF:
+ return "tpoff";
+ case ARMCP::SBREL:
+ return "SBREL";
+ case ARMCP::SECREL:
+ return "secrel32";
+ }
+ llvm_unreachable("Unknown modifier!");
+}
+
+int ARMConstantPoolValue::getExistingMachineCPValue(MachineConstantPool *CP,
+ Align Alignment) {
+ llvm_unreachable("Shouldn't be calling this directly!");
+}
+
+void
+ARMConstantPoolValue::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
+ ID.AddInteger(LabelId);
+ ID.AddInteger(PCAdjust);
+}
+
+bool
+ARMConstantPoolValue::hasSameValue(ARMConstantPoolValue *ACPV) {
+ if (ACPV->Kind == Kind &&
+ ACPV->PCAdjust == PCAdjust &&
+ ACPV->Modifier == Modifier &&
+ ACPV->LabelId == LabelId &&
+ ACPV->AddCurrentAddress == AddCurrentAddress) {
+ // Two PC relative constpool entries containing the same GV address or
+ // external symbols. FIXME: What about blockaddress?
+ if (Kind == ARMCP::CPValue || Kind == ARMCP::CPExtSymbol)
+ return true;
+ }
+ return false;
+}
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+LLVM_DUMP_METHOD void ARMConstantPoolValue::dump() const {
+ errs() << " " << *this;
+}
+#endif
+
+void ARMConstantPoolValue::print(raw_ostream &O) const {
+ if (Modifier) O << "(" << getModifierText() << ")";
+ if (PCAdjust != 0) {
+ O << "-(LPC" << LabelId << "+" << (unsigned)PCAdjust;
+ if (AddCurrentAddress) O << "-.";
+ O << ")";
+ }
+}
+
+//===----------------------------------------------------------------------===//
+// ARMConstantPoolConstant
+//===----------------------------------------------------------------------===//
+
+ARMConstantPoolConstant::ARMConstantPoolConstant(Type *Ty,
+ const Constant *C,
+ unsigned ID,
+ ARMCP::ARMCPKind Kind,
+ unsigned char PCAdj,
+ ARMCP::ARMCPModifier Modifier,
+ bool AddCurrentAddress)
+ : ARMConstantPoolValue(Ty, ID, Kind, PCAdj, Modifier, AddCurrentAddress),
+ CVal(C) {}
+
+ARMConstantPoolConstant::ARMConstantPoolConstant(const Constant *C,
+ unsigned ID,
+ ARMCP::ARMCPKind Kind,
+ unsigned char PCAdj,
+ ARMCP::ARMCPModifier Modifier,
+ bool AddCurrentAddress)
+ : ARMConstantPoolValue((Type*)C->getType(), ID, Kind, PCAdj, Modifier,
+ AddCurrentAddress),
+ CVal(C) {}
+
+ARMConstantPoolConstant::ARMConstantPoolConstant(const GlobalVariable *GV,
+ const Constant *C)
+ : ARMConstantPoolValue((Type *)C->getType(), 0, ARMCP::CPPromotedGlobal, 0,
+ ARMCP::no_modifier, false), CVal(C) {
+ GVars.insert(GV);
+}
+
+ARMConstantPoolConstant *
+ARMConstantPoolConstant::Create(const Constant *C, unsigned ID) {
+ return new ARMConstantPoolConstant(C, ID, ARMCP::CPValue, 0,
+ ARMCP::no_modifier, false);
+}
+
+ARMConstantPoolConstant *
+ARMConstantPoolConstant::Create(const GlobalVariable *GVar,
+ const Constant *Initializer) {
+ return new ARMConstantPoolConstant(GVar, Initializer);
+}
+
+ARMConstantPoolConstant *
+ARMConstantPoolConstant::Create(const GlobalValue *GV,
+ ARMCP::ARMCPModifier Modifier) {
+ return new ARMConstantPoolConstant((Type*)Type::getInt32Ty(GV->getContext()),
+ GV, 0, ARMCP::CPValue, 0,
+ Modifier, false);
+}
+
+ARMConstantPoolConstant *
+ARMConstantPoolConstant::Create(const Constant *C, unsigned ID,
+ ARMCP::ARMCPKind Kind, unsigned char PCAdj) {
+ return new ARMConstantPoolConstant(C, ID, Kind, PCAdj,
+ ARMCP::no_modifier, false);
+}
+
+ARMConstantPoolConstant *
+ARMConstantPoolConstant::Create(const Constant *C, unsigned ID,
+ ARMCP::ARMCPKind Kind, unsigned char PCAdj,
+ ARMCP::ARMCPModifier Modifier,
+ bool AddCurrentAddress) {
+ return new ARMConstantPoolConstant(C, ID, Kind, PCAdj, Modifier,
+ AddCurrentAddress);
+}
+
+const GlobalValue *ARMConstantPoolConstant::getGV() const {
+ return dyn_cast_or_null<GlobalValue>(CVal);
+}
+
+const BlockAddress *ARMConstantPoolConstant::getBlockAddress() const {
+ return dyn_cast_or_null<BlockAddress>(CVal);
+}
+
+int ARMConstantPoolConstant::getExistingMachineCPValue(MachineConstantPool *CP,
+ Align Alignment) {
+ int index =
+ getExistingMachineCPValueImpl<ARMConstantPoolConstant>(CP, Alignment);
+ if (index != -1) {
+ auto *CPV = static_cast<ARMConstantPoolValue*>(
+ CP->getConstants()[index].Val.MachineCPVal);
+ auto *Constant = cast<ARMConstantPoolConstant>(CPV);
+ Constant->GVars.insert(GVars.begin(), GVars.end());
+ }
+ return index;
+}
+
+bool ARMConstantPoolConstant::hasSameValue(ARMConstantPoolValue *ACPV) {
+ const ARMConstantPoolConstant *ACPC = dyn_cast<ARMConstantPoolConstant>(ACPV);
+ return ACPC && ACPC->CVal == CVal && ARMConstantPoolValue::hasSameValue(ACPV);
+}
+
+void ARMConstantPoolConstant::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
+ ID.AddPointer(CVal);
+ for (const auto *GV : GVars)
+ ID.AddPointer(GV);
+ ARMConstantPoolValue::addSelectionDAGCSEId(ID);
+}
+
+void ARMConstantPoolConstant::print(raw_ostream &O) const {
+ O << CVal->getName();
+ ARMConstantPoolValue::print(O);
+}
+
+//===----------------------------------------------------------------------===//
+// ARMConstantPoolSymbol
+//===----------------------------------------------------------------------===//
+
+ARMConstantPoolSymbol::ARMConstantPoolSymbol(LLVMContext &C, StringRef s,
+ unsigned id, unsigned char PCAdj,
+ ARMCP::ARMCPModifier Modifier,
+ bool AddCurrentAddress)
+ : ARMConstantPoolValue(C, id, ARMCP::CPExtSymbol, PCAdj, Modifier,
+ AddCurrentAddress),
+ S(std::string(s)) {}
+
+ARMConstantPoolSymbol *ARMConstantPoolSymbol::Create(LLVMContext &C,
+ StringRef s, unsigned ID,
+ unsigned char PCAdj) {
+ return new ARMConstantPoolSymbol(C, s, ID, PCAdj, ARMCP::no_modifier, false);
+}
+
+int ARMConstantPoolSymbol::getExistingMachineCPValue(MachineConstantPool *CP,
+ Align Alignment) {
+ return getExistingMachineCPValueImpl<ARMConstantPoolSymbol>(CP, Alignment);
+}
+
+bool ARMConstantPoolSymbol::hasSameValue(ARMConstantPoolValue *ACPV) {
+ const ARMConstantPoolSymbol *ACPS = dyn_cast<ARMConstantPoolSymbol>(ACPV);
+ return ACPS && ACPS->S == S && ARMConstantPoolValue::hasSameValue(ACPV);
+}
+
+void ARMConstantPoolSymbol::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
+ ID.AddString(S);
+ ARMConstantPoolValue::addSelectionDAGCSEId(ID);
+}
+
+void ARMConstantPoolSymbol::print(raw_ostream &O) const {
+ O << S;
+ ARMConstantPoolValue::print(O);
+}
+
+//===----------------------------------------------------------------------===//
+// ARMConstantPoolMBB
+//===----------------------------------------------------------------------===//
+
+ARMConstantPoolMBB::ARMConstantPoolMBB(LLVMContext &C,
+ const MachineBasicBlock *mbb,
+ unsigned id, unsigned char PCAdj,
+ ARMCP::ARMCPModifier Modifier,
+ bool AddCurrentAddress)
+ : ARMConstantPoolValue(C, id, ARMCP::CPMachineBasicBlock, PCAdj,
+ Modifier, AddCurrentAddress),
+ MBB(mbb) {}
+
+ARMConstantPoolMBB *ARMConstantPoolMBB::Create(LLVMContext &C,
+ const MachineBasicBlock *mbb,
+ unsigned ID,
+ unsigned char PCAdj) {
+ return new ARMConstantPoolMBB(C, mbb, ID, PCAdj, ARMCP::no_modifier, false);
+}
+
+int ARMConstantPoolMBB::getExistingMachineCPValue(MachineConstantPool *CP,
+ Align Alignment) {
+ return getExistingMachineCPValueImpl<ARMConstantPoolMBB>(CP, Alignment);
+}
+
+bool ARMConstantPoolMBB::hasSameValue(ARMConstantPoolValue *ACPV) {
+ const ARMConstantPoolMBB *ACPMBB = dyn_cast<ARMConstantPoolMBB>(ACPV);
+ return ACPMBB && ACPMBB->MBB == MBB &&
+ ARMConstantPoolValue::hasSameValue(ACPV);
+}
+
+void ARMConstantPoolMBB::addSelectionDAGCSEId(FoldingSetNodeID &ID) {
+ ID.AddPointer(MBB);
+ ARMConstantPoolValue::addSelectionDAGCSEId(ID);
+}
+
+void ARMConstantPoolMBB::print(raw_ostream &O) const {
+ O << printMBBReference(*MBB);
+ ARMConstantPoolValue::print(O);
+}