From 4a1c4a414ca8ab087dd365eb2e5421ee8535c7ae Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 5 Jan 2009 08:09:48 +0000 Subject: [PATCH] add checking intentionally elided for vfcmp/vicmp since they should really just be removed. However, this fixes PR3281:crash04.ll, diagnosing it with: lvm-as: crash04.ll:2:13: vfcmp requires vector floating point operands vfcmp uno double* undef, undef ^ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61680 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/LLParser.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 681a6622b3c..68946393119 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -2677,8 +2677,12 @@ bool LLParser::ParseCompare(Instruction *&Inst, PerFunctionState &PFS, return Error(Loc, "icmp requires integer operands"); Inst = new ICmpInst(CmpInst::Predicate(Pred), LHS, RHS); } else if (Opc == Instruction::VFCmp) { + if (!LHS->getType()->isFPOrFPVector() || !isa(LHS->getType())) + return Error(Loc, "vfcmp requires vector floating point operands"); Inst = new VFCmpInst(CmpInst::Predicate(Pred), LHS, RHS); } else if (Opc == Instruction::VICmp) { + if (!LHS->getType()->isIntOrIntVector() || !isa(LHS->getType())) + return Error(Loc, "vicmp requires vector floating point operands"); Inst = new VICmpInst(CmpInst::Predicate(Pred), LHS, RHS); } return false; -- 2.34.1