mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Merging from mainline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_20@36931 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -386,6 +386,12 @@ static void WriteModuleInfo(const Module *M, const ValueEnumerator &VE,
|
||||
Vals.push_back(F->getCallingConv());
|
||||
Vals.push_back(F->isDeclaration());
|
||||
Vals.push_back(getEncodedLinkage(F));
|
||||
|
||||
// Note: we emit the param attr ID number for the function type of this
|
||||
// function. In the future, we intend for attrs to be properties of
|
||||
// functions, instead of on the type. This is to support this future work.
|
||||
Vals.push_back(VE.getParamAttrID(F->getFunctionType()->getParamAttrs()));
|
||||
|
||||
Vals.push_back(Log2_32(F->getAlignment())+1);
|
||||
Vals.push_back(F->hasSection() ? SectionMap[F->getSection()] : 0);
|
||||
Vals.push_back(getEncodedVisibility(F));
|
||||
@@ -736,15 +742,21 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
||||
Vals.push_back(VE.getValueID(I.getOperand(i)));
|
||||
break;
|
||||
case Instruction::Invoke: {
|
||||
const PointerType *PTy = cast<PointerType>(I.getOperand(0)->getType());
|
||||
const FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
|
||||
Code = bitc::FUNC_CODE_INST_INVOKE;
|
||||
|
||||
// Note: we emit the param attr ID number for the function type of this
|
||||
// function. In the future, we intend for attrs to be properties of
|
||||
// functions, instead of on the type. This is to support this future work.
|
||||
Vals.push_back(VE.getParamAttrID(FTy->getParamAttrs()));
|
||||
|
||||
Vals.push_back(cast<InvokeInst>(I).getCallingConv());
|
||||
Vals.push_back(VE.getValueID(I.getOperand(1))); // normal dest
|
||||
Vals.push_back(VE.getValueID(I.getOperand(2))); // unwind dest
|
||||
PushValueAndType(I.getOperand(0), InstID, Vals, VE); // callee
|
||||
|
||||
// Emit value #'s for the fixed parameters.
|
||||
const PointerType *PTy = cast<PointerType>(I.getOperand(0)->getType());
|
||||
const FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
|
||||
for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i)
|
||||
Vals.push_back(VE.getValueID(I.getOperand(i+3))); // fixed param.
|
||||
|
||||
@@ -806,14 +818,21 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
||||
Vals.push_back(cast<StoreInst>(I).isVolatile());
|
||||
break;
|
||||
case Instruction::Call: {
|
||||
const PointerType *PTy = cast<PointerType>(I.getOperand(0)->getType());
|
||||
const FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
|
||||
|
||||
Code = bitc::FUNC_CODE_INST_CALL;
|
||||
|
||||
// Note: we emit the param attr ID number for the function type of this
|
||||
// function. In the future, we intend for attrs to be properties of
|
||||
// functions, instead of on the type. This is to support this future work.
|
||||
Vals.push_back(VE.getParamAttrID(FTy->getParamAttrs()));
|
||||
|
||||
Vals.push_back((cast<CallInst>(I).getCallingConv() << 1) |
|
||||
unsigned(cast<CallInst>(I).isTailCall()));
|
||||
PushValueAndType(I.getOperand(0), InstID, Vals, VE); // Callee
|
||||
|
||||
// Emit value #'s for the fixed parameters.
|
||||
const PointerType *PTy = cast<PointerType>(I.getOperand(0)->getType());
|
||||
const FunctionType *FTy = cast<FunctionType>(PTy->getElementType());
|
||||
for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i)
|
||||
Vals.push_back(VE.getValueID(I.getOperand(i+1))); // fixed param.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user