[PATCH] Teach ConstantFolding about address space pointer sizes
Matt Arsenault
arsenm2 at gmail.com
Sat Aug 10 09:29:26 PDT 2013
On Aug 9, 2013, at 21:15 , Eli Friedman <eli.friedman at gmail.com> wrote:
>
> This is a little on the large side to review easily; maybe commit a few formatting changes first to reduce the size of the patch? Or maybe I'm just tired. :)
>
>
> ================
> Comment at: lib/Analysis/ConstantFolding.cpp:667
> @@ -659,1 +666,3 @@
> + unsigned AS = Ptr->getType()->getPointerAddressSpace();
> + Type *IntPtrTy = TD->getIntPtrType(Ptr->getContext(), AS);
>
> ----------------
> Why not pass in the type directly?
>
>
> ================
> Comment at: lib/Analysis/ConstantFolding.cpp:418
> @@ -413,3 +417,3 @@
> GlobalValue *GVal;
> - APInt Offset(TD.getPointerSizeInBits(), 0);
> + APInt Offset(TD.getPointerSizeInBits(AS), 0);
> if (!IsConstantOffsetFromGlobal(C, GVal, Offset, TD))
> ----------------
> getPointerTypeSizeInBits?
I've found that in many places (I believe these ones count) where using those is more error prone when there are vectors of pointers. When given a pointer vector, getIntPtrType returns an integer vector type. This makes sense in many places, but not in others. The alternative would be to remember to use getIntPtrType()->getScalarType() in some situations.
More information about the llvm-commits
mailing list