[llvm] a5337d6 - [BitcodeReader] `bitc::CST_CODE_INLINEASM`: un-hardcode offsets
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 30 02:59:12 PST 2021
Author: Roman Lebedev
Date: 2021-12-30T13:50:02+03:00
New Revision: a5337d6a1c6701eb98e085fb69a6e33c36f9533f
URL: https://github.com/llvm/llvm-project/commit/a5337d6a1c6701eb98e085fb69a6e33c36f9533f
DIFF: https://github.com/llvm/llvm-project/commit/a5337d6a1c6701eb98e085fb69a6e33c36f9533f.diff
LOG: [BitcodeReader] `bitc::CST_CODE_INLINEASM`: un-hardcode offsets
Added:
Modified:
llvm/lib/Bitcode/Reader/BitcodeReader.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 1684f04d5ea82..3360ad1c23500 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -2860,22 +2860,26 @@ Error BitcodeReader::parseConstants() {
case bitc::CST_CODE_INLINEASM: {
if (Record.size() < 2)
return error("Invalid record");
+ unsigned OpNum = 0;
std::string AsmStr, ConstrStr;
- bool HasSideEffects = Record[0] & 1;
- bool IsAlignStack = (Record[0] >> 1) & 1;
- unsigned AsmDialect = (Record[0] >> 2) & 1;
- bool CanThrow = (Record[0] >> 3) & 1;
- unsigned AsmStrSize = Record[1];
- if (2 + AsmStrSize >= Record.size())
+ bool HasSideEffects = Record[OpNum] & 1;
+ bool IsAlignStack = (Record[OpNum] >> 1) & 1;
+ unsigned AsmDialect = (Record[OpNum] >> 2) & 1;
+ bool CanThrow = (Record[OpNum] >> 3) & 1;
+ ++OpNum;
+ unsigned AsmStrSize = Record[OpNum];
+ ++OpNum;
+ if (OpNum + AsmStrSize >= Record.size())
return error("Invalid record");
- unsigned ConstStrSize = Record[2 + AsmStrSize];
- if (3 + AsmStrSize + ConstStrSize > Record.size())
+ unsigned ConstStrSize = Record[OpNum + AsmStrSize];
+ if (OpNum + 1 + AsmStrSize + ConstStrSize > Record.size())
return error("Invalid record");
for (unsigned i = 0; i != AsmStrSize; ++i)
- AsmStr += (char)Record[2 + i];
+ AsmStr += (char)Record[OpNum + i];
+ ++OpNum;
for (unsigned i = 0; i != ConstStrSize; ++i)
- ConstrStr += (char)Record[3 + AsmStrSize + i];
+ ConstrStr += (char)Record[OpNum + AsmStrSize + i];
UpgradeInlineAsmString(&AsmStr);
V = InlineAsm::get(
cast<FunctionType>(cast<PointerType>(CurTy)->getElementType()),
More information about the llvm-commits
mailing list