mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Revamp the "ConstantStruct::get" methods. Previously, these were scattered
all over the place in different styles and variants. Standardize on two preferred entrypoints: one that takes a StructType and ArrayRef, and one that takes StructType and varargs. In cases where there isn't a struct type convenient, we now add a ConstantStruct::getAnon method (whose name will make more sense after a few more patches land). It would be "really really nice" if the ConstantStruct::get and ConstantVector::get methods didn't make temporary std::vectors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133412 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -194,7 +194,7 @@ Constant *ShadowStackGC::GetFrameMap(Function &F) {
|
||||
|
||||
// Truncate the ShadowStackDescriptor if some metadata is null.
|
||||
unsigned NumMeta = 0;
|
||||
SmallVector<Constant*,16> Metadata;
|
||||
SmallVector<Constant*, 16> Metadata;
|
||||
for (unsigned I = 0; I != Roots.size(); ++I) {
|
||||
Constant *C = cast<Constant>(Roots[I].first->getArgOperand(1));
|
||||
if (!C->isNullValue())
|
||||
@ -202,19 +202,23 @@ Constant *ShadowStackGC::GetFrameMap(Function &F) {
|
||||
Metadata.push_back(ConstantExpr::getBitCast(C, VoidPtr));
|
||||
}
|
||||
|
||||
const Type *Int32Ty = Type::getInt32Ty(F.getContext());
|
||||
|
||||
Constant *BaseElts[] = {
|
||||
ConstantInt::get(Type::getInt32Ty(F.getContext()), Roots.size(), false),
|
||||
ConstantInt::get(Type::getInt32Ty(F.getContext()), NumMeta, false),
|
||||
ConstantInt::get(Int32Ty, Roots.size(), false),
|
||||
ConstantInt::get(Int32Ty, NumMeta, false),
|
||||
};
|
||||
|
||||
Constant *DescriptorElts[] = {
|
||||
ConstantStruct::get(F.getContext(), BaseElts, 2, false),
|
||||
ConstantStruct::get(StructType::get(Int32Ty, Int32Ty, NULL), BaseElts),
|
||||
ConstantArray::get(ArrayType::get(VoidPtr, NumMeta),
|
||||
Metadata.begin(), NumMeta)
|
||||
};
|
||||
|
||||
Constant *FrameMap = ConstantStruct::get(F.getContext(), DescriptorElts, 2,
|
||||
false);
|
||||
Constant *FrameMap =
|
||||
ConstantStruct::get(StructType::get(DescriptorElts[0]->getType(),
|
||||
DescriptorElts[1]->getType(), NULL),
|
||||
DescriptorElts);
|
||||
|
||||
std::string TypeName("gc_map.");
|
||||
TypeName += utostr(NumMeta);
|
||||
|
Reference in New Issue
Block a user