diff options
author | Dale Johannesen <dalej@apple.com> | 2009-10-13 20:46:56 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2009-10-13 20:46:56 +0000 |
commit | 4360298d2bf3c1ba8595a415cfa235df0bc76335 (patch) | |
tree | d8ccc1e4677e43ef3420c6a3a18007298a866a3e /lib/Bitcode | |
parent | 9578c7aad61935364b28677f19e330b621016148 (diff) | |
download | external_llvm-4360298d2bf3c1ba8595a415cfa235df0bc76335.tar.gz external_llvm-4360298d2bf3c1ba8595a415cfa235df0bc76335.tar.bz2 external_llvm-4360298d2bf3c1ba8595a415cfa235df0bc76335.zip |
Add an "msasm" flag to inline asm as suggested in PR 5125.
A little ugliness is accepted to keep the binary file format
compatible. No functional change yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84020 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bitcode')
-rw-r--r-- | lib/Bitcode/Reader/BitcodeReader.cpp | 5 | ||||
-rw-r--r-- | lib/Bitcode/Writer/BitcodeWriter.cpp | 3 |
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 50b99ae383..4eb12c69eb 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1164,7 +1164,8 @@ bool BitcodeReader::ParseConstants() { case bitc::CST_CODE_INLINEASM: { if (Record.size() < 2) return Error("Invalid INLINEASM record"); std::string AsmStr, ConstrStr; - bool HasSideEffects = Record[0]; + bool HasSideEffects = Record[0] & 1; + bool IsMsAsm = Record[0] >> 1; unsigned AsmStrSize = Record[1]; if (2+AsmStrSize >= Record.size()) return Error("Invalid INLINEASM record"); @@ -1178,7 +1179,7 @@ bool BitcodeReader::ParseConstants() { ConstrStr += (char)Record[3+AsmStrSize+i]; const PointerType *PTy = cast<PointerType>(CurTy); V = InlineAsm::get(cast<FunctionType>(PTy->getElementType()), - AsmStr, ConstrStr, HasSideEffects); + AsmStr, ConstrStr, HasSideEffects, IsMsAsm); break; } } diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index 2c45b342e5..12a1f5ea5d 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -679,7 +679,8 @@ static void WriteConstants(unsigned FirstVal, unsigned LastVal, } if (const InlineAsm *IA = dyn_cast<InlineAsm>(V)) { - Record.push_back(unsigned(IA->hasSideEffects())); + Record.push_back(unsigned(IA->hasSideEffects()) | + unsigned(IA->isMsAsm()) << 1); // Add the asm string. const std::string &AsmStr = IA->getAsmString(); |