diff options
| -rw-r--r-- | llvm/lib/CodeGen/MIRParser/MIParser.cpp | 7 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MIR/Generic/parse-integer-true-false.mir | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index c1c93575e35..3532b42fa64 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/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/llvm/test/CodeGen/MIR/Generic/parse-integer-true-false.mir b/llvm/test/CodeGen/MIR/Generic/parse-integer-true-false.mir new file mode 100644 index 00000000000..80cfb11373e --- /dev/null +++ b/llvm/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 +... |

