Index: llvm/lib/IR/DataLayout.cpp =================================================================== --- llvm/lib/IR/DataLayout.cpp +++ llvm/lib/IR/DataLayout.cpp @@ -791,8 +791,10 @@ "Expected a pointer or pointer vector type."); unsigned NumBits = getPointerTypeSizeInBits(Ty); IntegerType *IntTy = IntegerType::get(Ty->getContext(), NumBits); - if (VectorType *VecTy = dyn_cast(Ty)) + if (auto *VecTy = dyn_cast(Ty)) return FixedVectorType::get(IntTy, VecTy->getNumElements()); + else if (auto *VecTy = dyn_cast(Ty)) + return ScalableVectorType::get(IntTy, VecTy->getMinNumElements()); return IntTy; } Index: llvm/test/Transforms/InstCombine/vector_gep1.ll =================================================================== --- llvm/test/Transforms/InstCombine/vector_gep1.ll +++ llvm/test/Transforms/InstCombine/vector_gep1.ll @@ -62,3 +62,13 @@ ret <2 x i32*> %w } +define @test8() { +; CHECK-LABEL: @test8( +; CHECK-NEXT: ret icmp ult ( zext ( shufflevector ( insertelement ( undef, i32 1, i32 0), undef, zeroinitializer) to ), zeroinitializer) +; + %ins = insertelement undef, i32 1, i32 0 + %b = shufflevector %ins, undef, zeroinitializer + %c = inttoptr %b to + %d = icmp ult %c, zeroinitializer + ret %d +}