From 2ff41cea415a8d115df144422f7ee222f765e484 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Sat, 7 Nov 2015 02:48:49 +0000 Subject: [PATCH] [Bitcode] Add enums for call instruction markers and flags. NFC. This commit adds enums in LLVMBitCodes.h to improve readability and maintainability. This is a follow-up to r252368 which was discussed here: http://reviews.llvm.org/D12923 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252395 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Bitcode/LLVMBitCodes.h | 9 +++++++++ lib/Bitcode/Reader/BitcodeReader.cpp | 10 +++++----- lib/Bitcode/Writer/BitcodeWriter.cpp | 8 +++++--- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/llvm/Bitcode/LLVMBitCodes.h b/include/llvm/Bitcode/LLVMBitCodes.h index b79c2785a61..ad24d357065 100644 --- a/include/llvm/Bitcode/LLVMBitCodes.h +++ b/include/llvm/Bitcode/LLVMBitCodes.h @@ -335,6 +335,15 @@ enum { BITCODE_CURRENT_EPOCH = 0 }; SYNCHSCOPE_CROSSTHREAD = 1 }; + /// Markers and flags for call instruction. + enum CallMarkersFlags { + CALL_TAIL = 0, + CALL_CCONV = 1, + CALL_MUSTTAIL = 14, + CALL_EXPLICIT_TYPE = 15, + CALL_NOTAIL = 16 + }; + // The function body block (FUNCTION_BLOCK_ID) describes function bodies. It // can contain a constant block (CONSTANTS_BLOCK_ID). enum FunctionCodes { diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index a0029b26ff9..8920b6ed460 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -4946,7 +4946,7 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) { unsigned CCInfo = Record[OpNum++]; FunctionType *FTy = nullptr; - if (CCInfo >> 15 & 1 && + if (CCInfo >> bitc::CALL_EXPLICIT_TYPE & 1 && !(FTy = dyn_cast(getTypeByID(Record[OpNum++])))) return error("Explicit call type is not a function type"); @@ -4996,13 +4996,13 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) { OperandBundles.clear(); InstructionList.push_back(I); cast(I)->setCallingConv( - static_cast((0x7ff & CCInfo) >> 1)); + static_cast((0x7ff & CCInfo) >> bitc::CALL_CCONV)); CallInst::TailCallKind TCK = CallInst::TCK_None; - if (CCInfo & 1) + if (CCInfo & 1 << bitc::CALL_TAIL) TCK = CallInst::TCK_Tail; - if (CCInfo & (1 << 14)) + if (CCInfo & (1 << bitc::CALL_MUSTTAIL)) TCK = CallInst::TCK_MustTail; - if (CCInfo & (1 << 16)) + if (CCInfo & (1 << bitc::CALL_NOTAIL)) TCK = CallInst::TCK_NoTail; cast(I)->setTailCallKind(TCK); cast(I)->setAttributes(PAL); diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index 7497535d561..b5b79b26873 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2130,9 +2130,11 @@ static void WriteInstruction(const Instruction &I, unsigned InstID, Code = bitc::FUNC_CODE_INST_CALL; Vals.push_back(VE.getAttributeID(CI.getAttributes())); - Vals.push_back((CI.getCallingConv() << 1) | unsigned(CI.isTailCall()) | - unsigned(CI.isMustTailCall()) << 14 | 1 << 15 | - unsigned(CI.isNoTailCall()) << 16); + Vals.push_back(CI.getCallingConv() << bitc::CALL_CCONV | + unsigned(CI.isTailCall()) << bitc::CALL_TAIL | + unsigned(CI.isMustTailCall()) << bitc::CALL_MUSTTAIL | + 1 << bitc::CALL_EXPLICIT_TYPE | + unsigned(CI.isNoTailCall()) << bitc::CALL_NOTAIL); Vals.push_back(VE.getTypeID(FTy)); PushValueAndType(CI.getCalledValue(), InstID, Vals, VE); // Callee -- 2.34.1