[OpaquePtr] Remove uses of CreateInBoundsGEP() without element type

Remove uses of to-be-deprecated API.

Unfortunately this one mostly just makes the use of
getPointerElementType() explicit, as the correct type to use
wasn't immediately available (deriving it from QualType is left
as an excercise to the reader).

GitOrigin-RevId: 6225d0cc6e6e3eef63261dda1efaf10689e33db7
diff --git a/lib/CodeGen/IslNodeBuilder.cpp b/lib/CodeGen/IslNodeBuilder.cpp
index 2cf958b..16a8906 100644
--- a/lib/CodeGen/IslNodeBuilder.cpp
+++ b/lib/CodeGen/IslNodeBuilder.cpp
@@ -1146,10 +1146,11 @@
                                              PollyIRBuilder &Builder,
                                              std::string ArrayName) {
   assert(GlobalDescriptor && "invalid global descriptor given");
+  Type *Ty = GlobalDescriptor->getType()->getPointerElementType();
 
   Value *endIdx[4] = {Builder.getInt64(0), Builder.getInt32(3),
                       Builder.getInt64(0), Builder.getInt32(2)};
-  Value *endPtr = Builder.CreateInBoundsGEP(GlobalDescriptor, endIdx,
+  Value *endPtr = Builder.CreateInBoundsGEP(Ty, GlobalDescriptor, endIdx,
                                             ArrayName + "_end_ptr");
   Type *type = cast<GEPOperator>(endPtr)->getResultElementType();
   assert(isa<IntegerType>(type) && "expected type of end to be integral");
@@ -1158,7 +1159,7 @@
 
   Value *beginIdx[4] = {Builder.getInt64(0), Builder.getInt32(3),
                         Builder.getInt64(0), Builder.getInt32(1)};
-  Value *beginPtr = Builder.CreateInBoundsGEP(GlobalDescriptor, beginIdx,
+  Value *beginPtr = Builder.CreateInBoundsGEP(Ty, GlobalDescriptor, beginIdx,
                                               ArrayName + "_begin_ptr");
   Value *begin = Builder.CreateLoad(type, beginPtr, ArrayName + "_begin");