mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-21 03:28:31 +00:00
[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
This commit is contained in:
parent
d5e4538cdc
commit
2ff41cea41
@ -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 {
|
||||
|
@ -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<FunctionType>(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<CallInst>(I)->setCallingConv(
|
||||
static_cast<CallingConv::ID>((0x7ff & CCInfo) >> 1));
|
||||
static_cast<CallingConv::ID>((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<CallInst>(I)->setTailCallKind(TCK);
|
||||
cast<CallInst>(I)->setAttributes(PAL);
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user