summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/PseudoSourceValue.cpp36
1 files changed, 19 insertions, 17 deletions
diff --git a/llvm/lib/CodeGen/PseudoSourceValue.cpp b/llvm/lib/CodeGen/PseudoSourceValue.cpp
index f0127766f71..612293555e6 100644
--- a/llvm/lib/CodeGen/PseudoSourceValue.cpp
+++ b/llvm/lib/CodeGen/PseudoSourceValue.cpp
@@ -25,11 +25,14 @@ using namespace llvm;
namespace {
struct PSVGlobalsTy {
// PseudoSourceValues are immutable so don't need locking.
- const PseudoSourceValue PSVs[4];
+ const PseudoSourceValue StackPSV, GOTPSV, JumpTablePSV, ConstantPoolPSV;
sys::Mutex Lock; // Guards FSValues, but not the values inside it.
std::map<int, const PseudoSourceValue *> FSValues;
- PSVGlobalsTy() : PSVs() {}
+ PSVGlobalsTy()
+ : StackPSV(PseudoSourceValue::Stack), GOTPSV(PseudoSourceValue::GOT),
+ JumpTablePSV(PseudoSourceValue::JumpTable),
+ ConstantPoolPSV(PseudoSourceValue::ConstantPool) {}
~PSVGlobalsTy() {
for (std::map<int, const PseudoSourceValue *>::iterator
I = FSValues.begin(),
@@ -45,27 +48,27 @@ static ManagedStatic<PSVGlobalsTy> PSVGlobals;
} // anonymous namespace
const PseudoSourceValue *PseudoSourceValue::getStack() {
- return &PSVGlobals->PSVs[0];
+ return &PSVGlobals->StackPSV;
}
const PseudoSourceValue *PseudoSourceValue::getGOT() {
- return &PSVGlobals->PSVs[1];
+ return &PSVGlobals->GOTPSV;
}
const PseudoSourceValue *PseudoSourceValue::getJumpTable() {
- return &PSVGlobals->PSVs[2];
+ return &PSVGlobals->JumpTablePSV;
}
const PseudoSourceValue *PseudoSourceValue::getConstantPool() {
- return &PSVGlobals->PSVs[3];
+ return &PSVGlobals->ConstantPoolPSV;
}
-static const char *const PSVNames[] = {"Stack", "GOT", "JumpTable",
- "ConstantPool"};
+static const char *const PSVNames[] = {
+ "Stack", "GOT", "JumpTable", "ConstantPool", "FixedStack", "MipsCallEntry"};
-PseudoSourceValue::PseudoSourceValue(bool IsFixed) : IsFixed(IsFixed) {}
+PseudoSourceValue::PseudoSourceValue(PSVKind Kind) : Kind(Kind) {}
PseudoSourceValue::~PseudoSourceValue() {}
void PseudoSourceValue::printCustom(raw_ostream &O) const {
- O << PSVNames[this - PSVGlobals->PSVs];
+ O << PSVNames[Kind];
}
const PseudoSourceValue *PseudoSourceValue::getFixedStack(int FI) {
@@ -78,22 +81,21 @@ const PseudoSourceValue *PseudoSourceValue::getFixedStack(int FI) {
}
bool PseudoSourceValue::isConstant(const MachineFrameInfo *) const {
- if (this == getStack())
+ if (isStack())
return false;
- if (this == getGOT() || this == getConstantPool() || this == getJumpTable())
+ if (isGOT() || isConstantPool() || isJumpTable())
return true;
llvm_unreachable("Unknown PseudoSourceValue!");
}
-bool PseudoSourceValue::isAliased(const MachineFrameInfo *MFI) const {
- if (this == getStack() || this == getGOT() || this == getConstantPool() ||
- this == getJumpTable())
+bool PseudoSourceValue::isAliased(const MachineFrameInfo *) const {
+ if (isStack() || isGOT() || isConstantPool() || isJumpTable())
return false;
llvm_unreachable("Unknown PseudoSourceValue!");
}
-bool PseudoSourceValue::mayAlias(const MachineFrameInfo *MFI) const {
- if (this == getGOT() || this == getConstantPool() || this == getJumpTable())
+bool PseudoSourceValue::mayAlias(const MachineFrameInfo *) const {
+ if (isGOT() || isConstantPool() || isJumpTable())
return false;
return true;
}
OpenPOWER on IntegriCloud