aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMicah Villmow <villmow@gmail.com>2012-10-09 22:27:29 +0000
committerMicah Villmow <villmow@gmail.com>2012-10-09 22:27:29 +0000
commit63b8ab29c420703dc5ef32e6d76d9e4d8f60f19e (patch)
tree0bbbe067f88714506cb55da3f3f052c4686d577a
parent2fa8af224ea026f9432e833fd6f42a216423a010 (diff)
downloadexternal_llvm-63b8ab29c420703dc5ef32e6d76d9e4d8f60f19e.zip
external_llvm-63b8ab29c420703dc5ef32e6d76d9e4d8f60f19e.tar.gz
external_llvm-63b8ab29c420703dc5ef32e6d76d9e4d8f60f19e.tar.bz2
Add in some interfaces that will allow easier access to the pointer address space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165554 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/SelectionDAGNodes.h7
-rw-r--r--include/llvm/Instructions.h14
-rw-r--r--include/llvm/Operator.h7
3 files changed, 25 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h
index fd89973..63d4759 100644
--- a/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -956,7 +956,12 @@ public:
const MachinePointerInfo &getPointerInfo() const {
return MMO->getPointerInfo();
}
-
+
+ /// getAddressSpace - Return the address space for the associated pointer
+ unsigned getAddressSpace() const {
+ return getPointerInfo().getAddrSpace();
+ }
+
/// refineAlignment - Update this MemSDNode's MachineMemOperand information
/// to reflect the alignment of NewMMO, if it has a greater alignment.
/// This must only be used when the new alignment applies to all users of
diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h
index 17b75b0..877e46f 100644
--- a/include/llvm/Instructions.h
+++ b/include/llvm/Instructions.h
@@ -778,7 +778,7 @@ public:
static Type *getIndexedType(Type *Ptr, ArrayRef<Constant *> IdxList);
static Type *getIndexedType(Type *Ptr, ArrayRef<uint64_t> IdxList);
- /// getIndexedType - Returns the address space used by the GEP pointer.
+ /// getAddressSpace - Returns the address space used by the GEP pointer.
///
static unsigned getAddressSpace(Value *Ptr);
@@ -798,7 +798,7 @@ public:
}
unsigned getPointerAddressSpace() const {
- return cast<PointerType>(getType())->getAddressSpace();
+ return cast<PointerType>(getPointerOperandType())->getAddressSpace();
}
/// getPointerOperandType - Method to return the pointer operand as a
@@ -3640,6 +3640,11 @@ public:
/// @brief Clone an identical IntToPtrInst
virtual IntToPtrInst *clone_impl() const;
+ /// @brief return the address space of the pointer.
+ unsigned getAddressSpace() const {
+ return cast<PointerType>(getType())->getAddressSpace();
+ }
+
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const IntToPtrInst *) { return true; }
static inline bool classof(const Instruction *I) {
@@ -3677,6 +3682,11 @@ public:
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
);
+ /// @brief return the address space of the pointer.
+ unsigned getPointerAddressSpace() const {
+ return cast<PointerType>(getOperand(0)->getType())->getAddressSpace();
+ }
+
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const PtrToIntInst *) { return true; }
static inline bool classof(const Instruction *I) {
diff --git a/include/llvm/Operator.h b/include/llvm/Operator.h
index 459df2b..61ac163 100644
--- a/include/llvm/Operator.h
+++ b/include/llvm/Operator.h
@@ -16,6 +16,7 @@
#define LLVM_OPERATOR_H
#include "llvm/Constants.h"
+#include "llvm/DerivedTypes.h"
#include "llvm/Instruction.h"
#include "llvm/Type.h"
@@ -290,6 +291,12 @@ public:
return getPointerOperand()->getType();
}
+ /// getPointerAddressSpace - Method to return the address space of the
+ /// pointer operand.
+ unsigned getPointerAddressSpace() const {
+ return cast<PointerType>(getPointerOperandType())->getAddressSpace();
+ }
+
unsigned getNumIndices() const { // Note: always non-negative
return getNumOperands() - 1;
}