Optional typed literal number should be concrete in BinaryParser.

This commit is contained in:
Lei Zhang 2015-11-10 14:29:35 -05:00 committed by David Neto
parent 0db3721675
commit aa3cd5abb9
2 changed files with 11 additions and 0 deletions

View File

@ -451,6 +451,7 @@ spv_result_t Parser::parseOperand(spv_parsed_instruction_t* inst,
case SPV_OPERAND_TYPE_TYPED_LITERAL_NUMBER:
case SPV_OPERAND_TYPE_OPTIONAL_TYPED_LITERAL_INTEGER:
parsed_operand.type = SPV_OPERAND_TYPE_TYPED_LITERAL_NUMBER;
if (inst->opcode == SpvOpSwitch) {
// The literal operands have the same type as the value
// referenced by the selector Id.

View File

@ -497,4 +497,14 @@ TEST_F(MaskSorting, MasksAreSortedFromLSBToMSB) {
" %5 %6 %7 %8 %9 %10 %11 %12 %13\n"));
}
using OperandTypeTest = spvtest::TextToBinaryTest;
TEST_F(OperandTypeTest, OptionalTypedLiteralNumber) {
const std::string input =
"%1 = OpTypeInt 32 0\n"
"%2 = OpConstant %1 42\n"
"OpSwitch %2 %3 100 %4\n";
EXPECT_EQ(input, EncodeAndDecodeSuccessfully(input));
}
} // anonymous namespace