[PATCH] D26060: [ConstantFolding] Don't try to cast vectors to pointer if they have different size

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 28 15:36:24 PDT 2016


davide added inline comments.


================
Comment at: lib/Analysis/ConstantFolding.cpp:731
+             SrcElemTy, Ops.slice(1, i - 1)))) &&
+        Ops[i]->getType() != IntPtrTy && IntPtrTy->isVectorTy() &&
+        Ops[i]->getType()->getPrimitiveSizeInBits() ==
----------------
filcab wrote:
> Did you mean `Ops[i]->getType()->isVectorTy()`?
> 
> From `DataLayout.h`:
>     /// \brief Returns an integer type with size at least as big as that of a
>     /// pointer in the given address space.
>     IntegerType *getIntPtrType(LLVMContext &C, unsigned AddressSpace = 0) const;
> 
> So `IntPtrTy` will never be a vector type.
> It seems with your initial patch, we're not casting at all. But I might be misunderstanding something here.
There's a different overload which can actually return a `VectorTy`. 
```
  /// \brief Returns an integer (vector of integer) type with size at least as
  /// big as that of a pointer of the given pointer (vector of pointer) type.
  Type *getIntPtrType(Type *) const;
```
I also double checked and in my example `IntPtrTy` is a `VectorTy`


https://reviews.llvm.org/D26060





More information about the llvm-commits mailing list