aboutsummaryrefslogtreecommitdiff
path: root/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp')
-rw-r--r--lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
index 57dcea8953..8defdb5d1b 100644
--- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
+++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
@@ -2283,16 +2283,15 @@ bool NaClBitcodeReader::ParseFunctionBody(Function *F) {
break;
}
- case naclbitc::FUNC_CODE_INST_ALLOCA: { // ALLOCA: [instty, opty, op, align]
- if (Record.size() != 4)
+ case naclbitc::FUNC_CODE_INST_ALLOCA: { // ALLOCA: [op, align]
+ if (Record.size() != 2)
+ return Error("Invalid ALLOCA record");
+ Value *Size;
+ unsigned OpNum = 0;
+ if (getValue(Record, OpNum, NextValueNo, Size))
return Error("Invalid ALLOCA record");
- PointerType *Ty =
- dyn_cast_or_null<PointerType>(getTypeByID(Record[0]));
- Type *OpTy = getTypeByID(Record[1]);
- Value *Size = getOrCreateFnValueByID(Record[2], OpTy);
- unsigned Align = Record[3];
- if (!Ty || !Size) return Error("Invalid ALLOCA record");
- I = new AllocaInst(Ty->getElementType(), Size, (1 << Align) >> 1);
+ unsigned Align = Record[1];
+ I = new AllocaInst(Type::getInt8Ty(Context), Size, (1 << Align) >> 1);
InstructionList.push_back(I);
break;
}