diff options
author | David Blaikie <dblaikie@gmail.com> | 2015-04-22 04:14:46 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2015-04-22 04:14:46 +0000 |
commit | 50a0615264c104d1f6fcf63a7b610e35429e7264 (patch) | |
tree | ec00e27a3da8b69119c2e40b8f3e5c197b9752c0 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 612ddbfde03cf024083665a546613493d883f7b6 (diff) | |
download | llvm-50a0615264c104d1f6fcf63a7b610e35429e7264.zip llvm-50a0615264c104d1f6fcf63a7b610e35429e7264.tar.gz llvm-50a0615264c104d1f6fcf63a7b610e35429e7264.tar.bz2 |
[opaque pointer types] Serialize the value type for atomic store instructions
Without pointee types the space optimization of storing only the pointer
type and not the value type won't be viable - so add the extra type
information that would be missing.
llvm-svn: 235475
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 5ac9bbd..77d4c62 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -4067,14 +4067,18 @@ std::error_code BitcodeReader::ParseFunctionBody(Function *F) { InstructionList.push_back(I); break; } - case bitc::FUNC_CODE_INST_STOREATOMIC: { + case bitc::FUNC_CODE_INST_STOREATOMIC: + case bitc::FUNC_CODE_INST_STOREATOMIC_OLD: { // STOREATOMIC: [ptrty, ptr, val, align, vol, ordering, synchscope] unsigned OpNum = 0; Value *Val, *Ptr; if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || - popValue(Record, OpNum, NextValueNo, - cast<PointerType>(Ptr->getType())->getElementType(), Val) || - OpNum+4 != Record.size()) + (BitCode == bitc::FUNC_CODE_INST_STOREATOMIC + ? getValueTypePair(Record, OpNum, NextValueNo, Val) + : popValue(Record, OpNum, NextValueNo, + cast<PointerType>(Ptr->getType())->getElementType(), + Val)) || + OpNum + 4 != Record.size()) return Error("Invalid record"); AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); |