From b86b9032fdec8dfbdd96023e6da02c73c6fcba80 Mon Sep 17 00:00:00 2001 From: Amara Emerson Date: Tue, 5 Jun 2018 00:17:13 +0000 Subject: [PATCH] [MIRParser] Add parser support for 'true' and 'false' i1s. We already output true and false in the printer, but the parser isn't able to read it. Differential Revision: https://reviews.llvm.org/D47424 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333970 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MIRParser/MIParser.cpp | 7 +++++-- test/CodeGen/MIR/Generic/parse-integer-true-false.mir | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/CodeGen/MIR/Generic/parse-integer-true-false.mir diff --git a/lib/CodeGen/MIRParser/MIParser.cpp b/lib/CodeGen/MIRParser/MIParser.cpp index c1c93575e35..3532b42fa64 100644 --- a/lib/CodeGen/MIRParser/MIParser.cpp +++ b/lib/CodeGen/MIRParser/MIParser.cpp @@ -1373,8 +1373,11 @@ bool MIParser::parseTypedImmediateOperand(MachineOperand &Dest) { auto Loc = Token.location(); lex(); - if (Token.isNot(MIToken::IntegerLiteral)) - return error("expected an integer literal"); + if (Token.isNot(MIToken::IntegerLiteral)) { + if (Token.isNot(MIToken::Identifier) || + !(Token.range() == "true" || Token.range() == "false")) + return error("expected an integer literal"); + } const Constant *C = nullptr; if (parseIRConstant(Loc, C)) return true; diff --git a/test/CodeGen/MIR/Generic/parse-integer-true-false.mir b/test/CodeGen/MIR/Generic/parse-integer-true-false.mir new file mode 100644 index 00000000000..80cfb11373e --- /dev/null +++ b/test/CodeGen/MIR/Generic/parse-integer-true-false.mir @@ -0,0 +1,11 @@ +# RUN: llc -run-pass none -o - %s | FileCheck %s +# Parse an i1 being a 'true' or 'false' +--- +name: i1_true_false +body: | + bb.0: + ; CHECK: %0:_(s1) = G_CONSTANT i1 true + ; CHECK: %1:_(s1) = G_CONSTANT i1 false + %0:_(s1) = G_CONSTANT i1 true + %1:_(s1) = G_CONSTANT i1 false +... -- 2.11.0