aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/iMemory.h27
-rw-r--r--lib/CodeGen/InstrSelection/InstrForest.cpp2
-rw-r--r--lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp4
-rw-r--r--lib/Target/SparcV9/InstrSelection/InstrForest.cpp2
-rw-r--r--lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp4
-rw-r--r--lib/Target/SparcV9/SparcV9InstrSelection.cpp11
-rw-r--r--lib/Transforms/ExprTypeConvert.cpp22
-rw-r--r--lib/Transforms/Instrumentation/TraceValues.cpp2
-rw-r--r--lib/Transforms/LevelRaise.cpp8
9 files changed, 41 insertions, 41 deletions
diff --git a/include/llvm/iMemory.h b/include/llvm/iMemory.h
index 29518686cf..1dbc1dbea3 100644
--- a/include/llvm/iMemory.h
+++ b/include/llvm/iMemory.h
@@ -182,16 +182,19 @@ public:
const vector<ConstPoolVal*> &Indices,
bool AllowStructLeaf = false);
- const vector<ConstPoolVal*> &getIndices() const { return indexVec; }
-
- inline bool hasIndices() const { return !indexVec.empty(); }
-
- virtual Value *getPtrOperand() = 0;
+ Value *getPointerOperand() {
+ return getOperand(getFirstIndexOperandNumber()-1);
+ }
const Value *getPointerOperand() const {
- return ((MemAccessInst*)this)->getPtrOperand();
+ return getOperand(getFirstIndexOperandNumber()-1);
}
- virtual int getFirstOffsetIdx() const = 0;
+ virtual unsigned getFirstIndexOperandNumber() const = 0;
+
+ const vector<ConstPoolVal*> &getIndices() const { return indexVec; }
+ inline bool hasIndices() const {
+ return getNumOperands() <= getFirstIndexOperandNumber();
+ }
};
@@ -213,8 +216,8 @@ public:
virtual Instruction *clone() const { return new LoadInst(*this); }
virtual const char *getOpcodeName() const { return "load"; }
- virtual Value *getPtrOperand() { return this->getOperand(0); }
- virtual int getFirstOffsetIdx() const { return (this->getNumOperands() > 1)? 1 : -1; }
+
+ virtual unsigned getFirstIndexOperandNumber() const { return 1; }
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const LoadInst *) { return true; }
@@ -247,8 +250,7 @@ public:
virtual const char *getOpcodeName() const { return "store"; }
virtual bool hasSideEffects() const { return true; }
- virtual Value *getPtrOperand() { return this->getOperand(1); }
- virtual int getFirstOffsetIdx() const { return (this->getNumOperands() > 2)? 2 : -1;}
+ virtual unsigned getFirstIndexOperandNumber() const { return 2; }
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const StoreInst *) { return true; }
@@ -277,8 +279,7 @@ public:
const string &Name = "");
virtual Instruction *clone() const { return new GetElementPtrInst(*this); }
virtual const char *getOpcodeName() const { return "getelementptr"; }
- virtual Value *getPtrOperand() { return this->getOperand(0); }
- virtual int getFirstOffsetIdx() const { return (this->getNumOperands() > 1)? 1 : -1;}
+ virtual unsigned getFirstIndexOperandNumber() const { return 1; }
inline bool isArraySelector() const { return !isStructSelector(); }
bool isStructSelector() const;
diff --git a/lib/CodeGen/InstrSelection/InstrForest.cpp b/lib/CodeGen/InstrSelection/InstrForest.cpp
index d460bb77e2..f928683060 100644
--- a/lib/CodeGen/InstrSelection/InstrForest.cpp
+++ b/lib/CodeGen/InstrSelection/InstrForest.cpp
@@ -76,7 +76,7 @@ InstructionNode::InstructionNode(Instruction* I)
}
else if ((opLabel == Instruction::Load ||
opLabel == Instruction::GetElementPtr) &&
- ((MemAccessInst*)I)->getFirstOffsetIdx() > 0)
+ cast<MemAccessInst>(I)->hasIndices())
{
opLabel = opLabel + 100; // load/getElem with index vector
}
diff --git a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp
index 0a6d7d331d..cb3f9a1582 100644
--- a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp
+++ b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp
@@ -117,7 +117,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode,
getElemInstrNode->getInstruction();
// Initialize return values from the incoming instruction
- Value* ptrVal = getElemInst->getPtrOperand();
+ Value* ptrVal = getElemInst->getPointerOperand();
chainIdxVec = getElemInst->getIndices(); // copies index vector values
// Now chase the chain of getElementInstr instructions, if any
@@ -131,7 +131,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode,
const vector<ConstPoolVal*>& idxVec = getElemInst->getIndices();
// Get the pointer value out of ptrChild and *prepend* its index vector
- ptrVal = getElemInst->getPtrOperand();
+ ptrVal = getElemInst->getPointerOperand();
chainIdxVec.insert(chainIdxVec.begin(), idxVec.begin(), idxVec.end());
ptrChild = ptrChild->leftChild();
diff --git a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
index d460bb77e2..f928683060 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrForest.cpp
@@ -76,7 +76,7 @@ InstructionNode::InstructionNode(Instruction* I)
}
else if ((opLabel == Instruction::Load ||
opLabel == Instruction::GetElementPtr) &&
- ((MemAccessInst*)I)->getFirstOffsetIdx() > 0)
+ cast<MemAccessInst>(I)->hasIndices())
{
opLabel = opLabel + 100; // load/getElem with index vector
}
diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp
index 0a6d7d331d..cb3f9a1582 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp
@@ -117,7 +117,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode,
getElemInstrNode->getInstruction();
// Initialize return values from the incoming instruction
- Value* ptrVal = getElemInst->getPtrOperand();
+ Value* ptrVal = getElemInst->getPointerOperand();
chainIdxVec = getElemInst->getIndices(); // copies index vector values
// Now chase the chain of getElementInstr instructions, if any
@@ -131,7 +131,7 @@ FoldGetElemChain(const InstructionNode* getElemInstrNode,
const vector<ConstPoolVal*>& idxVec = getElemInst->getIndices();
// Get the pointer value out of ptrChild and *prepend* its index vector
- ptrVal = getElemInst->getPtrOperand();
+ ptrVal = getElemInst->getPointerOperand();
chainIdxVec.insert(chainIdxVec.begin(), idxVec.begin(), idxVec.end());
ptrChild = ptrChild->leftChild();
diff --git a/lib/Target/SparcV9/SparcV9InstrSelection.cpp b/lib/Target/SparcV9/SparcV9InstrSelection.cpp
index 4feecbb1bd..8966db2f3e 100644
--- a/lib/Target/SparcV9/SparcV9InstrSelection.cpp
+++ b/lib/Target/SparcV9/SparcV9InstrSelection.cpp
@@ -781,17 +781,16 @@ SetOperandsForMemInstr(MachineInstr* minstr,
// Use the pointer value and the index vector from the Mem instruction.
// If it is an array reference, get the array offset value.
//
- ptrVal = memInst->getPtrOperand();
+ ptrVal = memInst->getPointerOperand();
- const Type* opType =
- ((const PointerType*) ptrVal->getType())->getValueType();
+ const Type* opType = cast<PointerType>(ptrVal->getType())->getValueType();
if (opType->isArrayType())
{
assert((memInst->getNumOperands()
- == (unsigned) 1 + memInst->getFirstOffsetIdx())
+ == (unsigned) 1 + memInst->getFirstIndexOperandNumber())
&& "Array refs must be lowered before Instruction Selection");
- arrayOffsetVal = memInst->getOperand(memInst->getFirstOffsetIdx());
+ arrayOffsetVal = memInst->getOperand(memInst->getFirstIndexOperandNumber());
}
}
@@ -1835,7 +1834,7 @@ GetInstructionsByRule(InstructionNode* subtreeRoot,
GetElementPtrInst* getElemInst =
cast<GetElementPtrInst>(subtreeRoot->getInstruction());
const PointerType* ptrType =
- (const PointerType*) getElemInst->getPtrOperand()->getType();
+ cast<PointerType>(getElemInst->getPointerOperand()->getType());
if (! ptrType->getValueType()->isArrayType())
{// we don't need a separate instr
numInstr = 0; // don't forward operand!
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp
index f8052b2494..2e7c297907 100644
--- a/lib/Transforms/ExprTypeConvert.cpp
+++ b/lib/Transforms/ExprTypeConvert.cpp
@@ -131,8 +131,8 @@ bool ExpressionConvertableToType(Value *V, const Type *Ty,
if (!CPV[i]->isNullValue()) return false;
}
- if (!ExpressionConvertableToType(LI->getPtrOperand(), PointerType::get(Ty),
- CTMap))
+ if (!ExpressionConvertableToType(LI->getPointerOperand(),
+ PointerType::get(Ty), CTMap))
return false;
break;
}
@@ -163,7 +163,7 @@ bool ExpressionConvertableToType(Value *V, const Type *Ty,
// get to the right type...
//
vector<ConstPoolVal*> Indices = GEP->getIndices();
- const Type *BaseType = GEP->getPtrOperand()->getType();
+ const Type *BaseType = GEP->getPointerOperand()->getType();
while (Indices.size() &&
cast<ConstPoolUInt>(Indices.back())->getValue() == 0) {
@@ -268,7 +268,7 @@ Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC) {
Res = new LoadInst(ConstPoolVal::getNullConstant(PointerType::get(Ty)),
Name);
VMC.ExprMap[I] = Res;
- Res->setOperand(0, ConvertExpressionToType(LI->getPtrOperand(),
+ Res->setOperand(0, ConvertExpressionToType(LI->getPointerOperand(),
PointerType::get(Ty), VMC));
assert(Res->getOperand(0)->getType() == PointerType::get(Ty));
assert(Ty == Res->getType());
@@ -310,7 +310,7 @@ Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC) {
// get to the right type...
//
vector<ConstPoolVal*> Indices = GEP->getIndices();
- const Type *BaseType = GEP->getPtrOperand()->getType();
+ const Type *BaseType = GEP->getPointerOperand()->getType();
const Type *PVTy = cast<PointerType>(Ty)->getValueType();
Res = 0;
while (Indices.size() &&
@@ -318,9 +318,9 @@ Value *ConvertExpressionToType(Value *V, const Type *Ty, ValueMapCache &VMC) {
Indices.pop_back();
if (GetElementPtrInst::getIndexedType(BaseType, Indices, true) == PVTy) {
if (Indices.size() == 0) {
- Res = new CastInst(GEP->getPtrOperand(), BaseType); // NOOP
+ Res = new CastInst(GEP->getPointerOperand(), BaseType); // NOOP
} else {
- Res = new GetElementPtrInst(GEP->getPtrOperand(), Indices, Name);
+ Res = new GetElementPtrInst(GEP->getPointerOperand(), Indices, Name);
}
break;
}
@@ -549,7 +549,7 @@ static bool OperandConvertableToType(User *U, Value *V, const Type *Ty,
// get to the right type...
//
vector<ConstPoolVal*> Indices = GEP->getIndices();
- const Type *BaseType = GEP->getPtrOperand()->getType();
+ const Type *BaseType = GEP->getPointerOperand()->getType();
while (Indices.size() &&
cast<ConstPoolUInt>(Indices.back())->getValue() == 0) {
@@ -713,7 +713,7 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal,
// get to the right type...
//
vector<ConstPoolVal*> Indices = GEP->getIndices();
- const Type *BaseType = GEP->getPtrOperand()->getType();
+ const Type *BaseType = GEP->getPointerOperand()->getType();
const Type *PVTy = cast<PointerType>(Ty)->getValueType();
Res = 0;
while (Indices.size() &&
@@ -721,9 +721,9 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal,
Indices.pop_back();
if (GetElementPtrInst::getIndexedType(BaseType, Indices, true) == PVTy) {
if (Indices.size() == 0) {
- Res = new CastInst(GEP->getPtrOperand(), BaseType); // NOOP
+ Res = new CastInst(GEP->getPointerOperand(), BaseType); // NOOP
} else {
- Res = new GetElementPtrInst(GEP->getPtrOperand(), Indices, Name);
+ Res = new GetElementPtrInst(GEP->getPointerOperand(), Indices, Name);
}
break;
}
diff --git a/lib/Transforms/Instrumentation/TraceValues.cpp b/lib/Transforms/Instrumentation/TraceValues.cpp
index 06c8438f26..e8598b9d85 100644
--- a/lib/Transforms/Instrumentation/TraceValues.cpp
+++ b/lib/Transforms/Instrumentation/TraceValues.cpp
@@ -310,7 +310,7 @@ InsertLoadInst(StoreInst* storeInst,
BasicBlock *bb,
BasicBlock::iterator &BBI)
{
- LoadInst* loadInst = new LoadInst(storeInst->getPtrOperand(),
+ LoadInst* loadInst = new LoadInst(storeInst->getPointerOperand(),
storeInst->getIndices());
BBI = bb->getInstList().insert(BBI, loadInst) + 1;
return loadInst;
diff --git a/lib/Transforms/LevelRaise.cpp b/lib/Transforms/LevelRaise.cpp
index dfe92ee234..78bb2ebce2 100644
--- a/lib/Transforms/LevelRaise.cpp
+++ b/lib/Transforms/LevelRaise.cpp
@@ -630,7 +630,7 @@ static bool PeepholeOptimize(BasicBlock *BB, BasicBlock::iterator &BI) {
} else if (StoreInst *SI = dyn_cast<StoreInst>(I)) {
Value *Val = SI->getOperand(0);
- Value *Pointer = SI->getPtrOperand();
+ Value *Pointer = SI->getPointerOperand();
// Peephole optimize the following instructions:
// %t1 = getelementptr {<...>} * %StructPtr, <element indices>
@@ -648,7 +648,7 @@ static bool PeepholeOptimize(BasicBlock *BB, BasicBlock::iterator &BI) {
PRINT_PEEPHOLE2("gep-store:in", GEP, SI);
ReplaceInstWithInst(BB->getInstList(), BI,
- SI = new StoreInst(Val, GEP->getPtrOperand(),
+ SI = new StoreInst(Val, GEP->getPointerOperand(),
Indices));
PRINT_PEEPHOLE1("gep-store:out", SI);
return true;
@@ -685,7 +685,7 @@ static bool PeepholeOptimize(BasicBlock *BB, BasicBlock::iterator &BI) {
} else if (LoadInst *LI = dyn_cast<LoadInst>(I)) {
- Value *Pointer = LI->getPtrOperand();
+ Value *Pointer = LI->getPointerOperand();
// Peephole optimize the following instructions:
// %t1 = getelementptr {<...>} * %StructPtr, <element indices>
@@ -703,7 +703,7 @@ static bool PeepholeOptimize(BasicBlock *BB, BasicBlock::iterator &BI) {
PRINT_PEEPHOLE2("gep-load:in", GEP, LI);
ReplaceInstWithInst(BB->getInstList(), BI,
- LI = new LoadInst(GEP->getPtrOperand(),
+ LI = new LoadInst(GEP->getPointerOperand(),
Indices));
PRINT_PEEPHOLE1("gep-load:out", LI);
return true;