[Float2Int] Don't operate on vector instructions

This fixes a crash bug. It's also not clear if we'd want to do this
transform for vectors.

llvm-svn: 255155
This commit is contained in:
Reid Kleckner 2015-12-09 21:08:18 +00:00
parent c3826da895
commit 54ade23504
2 changed files with 12 additions and 0 deletions

View File

@ -131,6 +131,8 @@ static Instruction::BinaryOps mapBinOpcode(unsigned Opcode) {
// integer domain.
void Float2Int::findRoots(Function &F, SmallPtrSet<Instruction*,8> &Roots) {
for (auto &I : instructions(F)) {
if (isa<VectorType>(I.getType()))
continue;
switch (I.getOpcode()) {
default: break;
case Instruction::FPToUI:

View File

@ -254,3 +254,13 @@ define i32 @neg_calluser(i32 %value) {
ret i32 %7
}
declare double @g(double)
; CHECK-LABEL: @neg_vector
; CHECK: %1 = uitofp <4 x i8> %a to <4 x float>
; CHECK: %2 = fptoui <4 x float> %1 to <4 x i16>
; CHECK: ret <4 x i16> %2
define <4 x i16> @neg_vector(<4 x i8> %a) {
%1 = uitofp <4 x i8> %a to <4 x float>
%2 = fptoui <4 x float> %1 to <4 x i16>
ret <4 x i16> %2
}