OSDN Git Service

Factorize code: rather than duplication the logic in getPointerTypeSizeInBits,
authorDuncan Sands <baldrick@free.fr>
Mon, 29 Oct 2012 14:30:05 +0000 (14:30 +0000)
committerDuncan Sands <baldrick@free.fr>
Mon, 29 Oct 2012 14:30:05 +0000 (14:30 +0000)
just call getPointerTypeSizeInBits.  No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166926 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/DataLayout.cpp

index 104e5da..b847492 100644 (file)
@@ -678,20 +678,8 @@ IntegerType *DataLayout::getIntPtrType(LLVMContext &C,
 /// getIntPtrType - Return an integer type that is the same size or
 /// greater to the pointer size of the specific PointerType.
 IntegerType *DataLayout::getIntPtrType(Type *Ty) const {
-  LLVMContext &C = Ty->getContext();
-  // For pointers, we return the size for the specific address space.
-  if (Ty->isPointerTy()) return IntegerType::get(C, getTypeSizeInBits(Ty));
-  // For vector of pointers, we return the size of the address space
-  // of the pointer type.
-  if (Ty->isVectorTy() && cast<VectorType>(Ty)->getElementType()->isPointerTy())
-    return IntegerType::get(C,
-        getTypeSizeInBits(cast<VectorType>(Ty)->getElementType()));
-  // Otherwise return the address space for the default address space.
-  // An example of this occuring is that you want to get the IntPtr
-  // for all of the arguments in a function. However, the IntPtr
-  // for a non-pointer type cannot be determined by the type, so
-  // the default value is used.
-  return getIntPtrType(C, 0);
+  unsigned NumBits = getPointerTypeSizeInBits(Ty);
+  return IntegerType::get(Ty->getContext(), NumBits);
 }