aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Reader/InstructionReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bytecode/Reader/InstructionReader.cpp')
-rw-r--r--lib/Bytecode/Reader/InstructionReader.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp
index 4beb2b0c11..21a1490397 100644
--- a/lib/Bytecode/Reader/InstructionReader.cpp
+++ b/lib/Bytecode/Reader/InstructionReader.cpp
@@ -36,9 +36,7 @@ namespace {
RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
std::vector<unsigned> &Args) {
- unsigned Op, Typ;
- if (read(Buf, EndBuf, Op))
- throw std::string("Error reading from buffer.");
+ unsigned Op = read(Buf, EndBuf);
// bits Instruction format: Common to all formats
// --------------------------
@@ -85,25 +83,19 @@ RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
break;
case 0:
Buf -= 4; // Hrm, try this again...
- if (read_vbr(Buf, EndBuf, Opcode))
- throw std::string("Error reading from buffer.");
+ Opcode = read_vbr_uint(Buf, EndBuf);
Opcode >>= 2;
- if (read_vbr(Buf, EndBuf, Type))
- throw std::string("Error reading from buffer.");
+ Type = read_vbr_uint(Buf, EndBuf);
- unsigned NumOperands;
- if (read_vbr(Buf, EndBuf, NumOperands))
- throw std::string("Error reading from buffer.");
+ unsigned NumOperands = read_vbr_uint(Buf, EndBuf);
Args.resize(NumOperands);
if (NumOperands == 0)
throw std::string("Zero-argument instruction found; this is invalid.");
for (unsigned i = 0; i != NumOperands; ++i)
- if (read_vbr(Buf, EndBuf, Args[i]))
- throw std::string("Error reading from buffer");
- if (align32(Buf, EndBuf))
- throw std::string("Unaligned bytecode buffer.");
+ Args[i] = read_vbr_uint(Buf, EndBuf);
+ align32(Buf, EndBuf);
break;
}
}