Type *Ty = nullptr;
if (OpNum + 3 == Record.size())
Ty = getTypeByID(Record[OpNum++]);
+ if (!Ty)
+ Ty = cast<PointerType>(Op->getType())->getElementType();
+ else if (Ty != cast<PointerType>(Op->getType())->getElementType())
+ return Error("Explicit load type does not match pointee type of "
+ "pointer operand");
unsigned Align;
if (std::error_code EC = parseAlignmentValue(Record[OpNum], Align))
return EC;
- I = new LoadInst(Op, "", Record[OpNum+1], Align);
-
- if (Ty && Ty != I->getType())
- return Error("Explicit load type does not match pointee type of "
- "pointer operand");
+ I = new LoadInst(Ty, Op, "", Record[OpNum + 1], Align);
InstructionList.push_back(I);
break;