mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix a CmpInst writing bug by removing merge cruft that I *know* I've removed
before. Also, make sure we write the predicate value for Cmp instructions using instruction format 0. llvm-svn: 32253
This commit is contained in:
parent
8fac1e29c7
commit
3e2d6cd0d1
@ -449,8 +449,8 @@ void BytecodeWriter::outputInstructionFormat0(const Instruction *I,
|
||||
output_typeid(Type); // Result type
|
||||
|
||||
unsigned NumArgs = I->getNumOperands();
|
||||
output_vbr(NumArgs + (isa<CastInst>(I) || isa<InvokeInst>(I) ||
|
||||
isa<VAArgInst>(I) || Opcode == 58));
|
||||
output_vbr(NumArgs + (isa<CastInst>(I) || isa<InvokeInst>(I) ||
|
||||
isa<CmpInst>(I) || isa<VAArgInst>(I) || Opcode == 58));
|
||||
|
||||
if (!isa<GetElementPtrInst>(&I)) {
|
||||
for (unsigned i = 0; i < NumArgs; ++i) {
|
||||
@ -463,6 +463,8 @@ void BytecodeWriter::outputInstructionFormat0(const Instruction *I,
|
||||
int Slot = Table.getSlot(I->getType());
|
||||
assert(Slot != -1 && "Cast return type unknown?");
|
||||
output_typeid((unsigned)Slot);
|
||||
} else if (isa<CmpInst>(I)) {
|
||||
output_vbr(unsigned(cast<CmpInst>(I)->getPredicate()));
|
||||
} else if (isa<InvokeInst>(I)) {
|
||||
output_vbr(cast<InvokeInst>(I)->getCallingConv());
|
||||
} else if (Opcode == 58) { // Call escape sequence
|
||||
@ -793,13 +795,6 @@ void BytecodeWriter::outputInstruction(const Instruction &I) {
|
||||
}
|
||||
}
|
||||
|
||||
// In the weird case of the ICmp or FCmp instructions, we need to also put
|
||||
// out the instruction's predicate value. We do that here, after the
|
||||
// instruction's type and operands have been written so we can reuse the
|
||||
// code above.
|
||||
if (const CmpInst* CI = dyn_cast<CmpInst>(&I))
|
||||
output_vbr((unsigned)CI->getPredicate());
|
||||
|
||||
// If we weren't handled before here, we either have a large number of
|
||||
// operands or a large operand index that we are referring to.
|
||||
outputInstructionFormat0(&I, Opcode, Table, Type);
|
||||
|
Loading…
Reference in New Issue
Block a user