From d80d608f768e0083122f74df80465effcd70f076 Mon Sep 17 00:00:00 2001 From: David Tweed Date: Mon, 7 Jan 2013 13:32:38 +0000 Subject: [PATCH] There was a switch fall-through in the parser for textual LLVM that caused bogus comparison operands to default to eq/oeq. Fix that, fix a couple of tests that accidentally passed and test for bogus comparison opeartors explicitly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171733 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/LLParser.cpp | 4 ++-- test/Feature/const_pv.ll | 2 +- test/Transforms/EarlyCSE/commute.ll | 4 ++-- test/Transforms/LoopIdiom/X86/popcnt.ll | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 5d5ff81da70..fea5ec84f9d 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -3120,7 +3120,7 @@ int LLParser::ParseInstruction(Instruction *&Inst, BasicBlock *BB, bool LLParser::ParseCmpPredicate(unsigned &P, unsigned Opc) { if (Opc == Instruction::FCmp) { switch (Lex.getKind()) { - default: TokError("expected fcmp predicate (e.g. 'oeq')"); + default: return TokError("expected fcmp predicate (e.g. 'oeq')"); case lltok::kw_oeq: P = CmpInst::FCMP_OEQ; break; case lltok::kw_one: P = CmpInst::FCMP_ONE; break; case lltok::kw_olt: P = CmpInst::FCMP_OLT; break; @@ -3140,7 +3140,7 @@ bool LLParser::ParseCmpPredicate(unsigned &P, unsigned Opc) { } } else { switch (Lex.getKind()) { - default: TokError("expected icmp predicate (e.g. 'eq')"); + default: return TokError("expected icmp predicate (e.g. 'eq')"); case lltok::kw_eq: P = CmpInst::ICMP_EQ; break; case lltok::kw_ne: P = CmpInst::ICMP_NE; break; case lltok::kw_slt: P = CmpInst::ICMP_SLT; break; diff --git a/test/Feature/const_pv.ll b/test/Feature/const_pv.ll index 6fd6abdccf0..272bf43a068 100644 --- a/test/Feature/const_pv.ll +++ b/test/Feature/const_pv.ll @@ -4,5 +4,5 @@ @G1 = global i8 zeroinitializer @g = constant <2 x i8*> getelementptr (<2 x i8*> , <2 x i32> ) -@t = constant <2 x i1> icmp ((<2 x i32> ptrtoint (<2 x i8*> zeroinitializer to <2 x i32>), <2 x i32> zeroinitializer ) +@t = constant <2 x i1> icmp eq (<2 x i32> ptrtoint (<2 x i8*> zeroinitializer to <2 x i32>), <2 x i32> zeroinitializer ) diff --git a/test/Transforms/EarlyCSE/commute.ll b/test/Transforms/EarlyCSE/commute.ll index f84a7dd1aae..8cf04d1765b 100644 --- a/test/Transforms/EarlyCSE/commute.ll +++ b/test/Transforms/EarlyCSE/commute.ll @@ -19,9 +19,9 @@ define void @test2(float %A, float %B, i1* %PA, i1* %PB) { ; CHECK-NEXT: store ; CHECK-NEXT: store ; CHECK-NEXT: ret - %C = fcmp eq float %A, %B + %C = fcmp oeq float %A, %B store i1 %C, i1* %PA - %D = fcmp eq float %B, %A + %D = fcmp oeq float %B, %A store i1 %D, i1* %PB ret void } diff --git a/test/Transforms/LoopIdiom/X86/popcnt.ll b/test/Transforms/LoopIdiom/X86/popcnt.ll index 2f458fb2f19..6aa905f87f9 100644 --- a/test/Transforms/LoopIdiom/X86/popcnt.ll +++ b/test/Transforms/LoopIdiom/X86/popcnt.ll @@ -1,5 +1,5 @@ ; RUN: opt -loop-idiom < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -S | FileCheck %s - +booom ;To recognize this pattern: ;int popcount(unsigned long long a) { ; int c = 0;