Fix some LLVM 16 deprecations wrt. DataLayout::getABITypeAlignment() and llvm::makeArrayRef()

This commit is contained in:
Martin Kinkelin 2023-08-12 22:49:19 +02:00
parent 2e39008fad
commit c8857e8cb8
7 changed files with 14 additions and 23 deletions

View file

@ -624,11 +624,10 @@ void initializeArrayLiteral(IRState *p, ArrayLiteralExp *ale,
////////////////////////////////////////////////////////////////////////////////
LLConstant *DtoConstSlice(LLConstant *dim, LLConstant *ptr, Type *type) {
LLConstant *values[2] = {dim, ptr};
llvm::ArrayRef<LLConstant *> valuesRef = llvm::makeArrayRef(values, 2);
LLStructType *lltype =
type ? isaStruct(DtoType(type))
: LLConstantStruct::getTypeForElements(gIR->context(), valuesRef);
return LLConstantStruct::get(lltype, valuesRef);
: LLConstantStruct::getTypeForElements(gIR->context(), values);
return LLConstantStruct::get(lltype, values);
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -117,7 +117,7 @@ public:
if (Count && Count % NumTypesPerWord == 0) {
using namespace llvm::support;
uint64_t Swapped = endian::byte_swap<uint64_t, little>(Working);
MD5.update(llvm::makeArrayRef((uint8_t *)&Swapped, sizeof(Swapped)));
MD5.update(llvm::ArrayRef<uint8_t>((uint8_t *)&Swapped, sizeof(Swapped)));
Working = 0;
}
@ -138,7 +138,7 @@ public:
if (Working) {
using namespace llvm::support;
uint64_t Swapped = endian::byte_swap<uint64_t, little>(Working);
MD5.update(llvm::makeArrayRef((uint8_t *)&Swapped, sizeof(Swapped)));
MD5.update(llvm::ArrayRef<uint8_t>((uint8_t *)&Swapped, sizeof(Swapped)));
}
// Finalize the MD5 and return the hash.

View file

@ -46,7 +46,7 @@ void RTTIBuilder::push(llvm::Constant *C) {
// We need to explicitly zero any padding bytes as per TDPL §7.1.1 (and
// also match the struct type lowering code here).
const uint64_t fieldStart = llvm::alignTo(
prevFieldEnd, gDataLayout->getABITypeAlignment(C->getType()));
prevFieldEnd, gDataLayout->getABITypeAlign(C->getType()).value());
const uint64_t paddingBytes = fieldStart - prevFieldEnd;
if (paddingBytes) {

View file

@ -102,7 +102,7 @@ void Target::_init(const Param &params) {
realType = getRealType(triple);
realsize = gDataLayout->getTypeAllocSize(realType);
realpad = realsize - gDataLayout->getTypeStoreSize(realType);
realalignsize = gDataLayout->getABITypeAlignment(realType);
realalignsize = gDataLayout->getABITypeAlign(realType).value();
classinfosize = 0; // unused
maxStaticDataSize = std::numeric_limits<unsigned long long>::max();
@ -211,7 +211,7 @@ unsigned Target::alignsize(Type *type) {
if (type->ty == TY::Tvoid) {
return 1;
}
return gDataLayout->getABITypeAlignment(DtoType(type));
return gDataLayout->getABITypeAlign(DtoType(type)).value();
}
/******************************

View file

@ -532,9 +532,7 @@ LLValue *DtoLoad(DLValue *src, const char *name) {
// the type.
LLValue *DtoAlignedLoad(LLType *type, LLValue *src, const char *name) {
llvm::LoadInst *ld = DtoLoadImpl(type, src, name);
if (auto alignment = getABITypeAlign(ld->getType())) {
ld->setAlignment(llvm::Align(alignment));
}
ld->setAlignment(gDataLayout->getABITypeAlign(ld->getType()));
return ld;
}
@ -570,9 +568,7 @@ void DtoAlignedStore(LLValue *src, LLValue *dst) {
assert(!src->getType()->isIntegerTy(1) &&
"Should store bools as i8 instead of i1.");
llvm::StoreInst *st = gIR->ir->CreateStore(src, dst);
if (auto alignment = getABITypeAlign(src->getType())) {
st->setAlignment(llvm::Align(alignment));
}
st->setAlignment(gDataLayout->getABITypeAlign(src->getType()));
}
////////////////////////////////////////////////////////////////////////////////
@ -747,7 +743,7 @@ size_t getTypeStoreSize(LLType *t) { return gDataLayout->getTypeStoreSize(t); }
size_t getTypeAllocSize(LLType *t) { return gDataLayout->getTypeAllocSize(t); }
unsigned int getABITypeAlign(LLType *t) {
return gDataLayout->getABITypeAlignment(t);
return gDataLayout->getABITypeAlign(t).value();
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -121,8 +121,7 @@ LLGlobalVariable *IrClass::getClassInfoSymbol(bool define) {
// Construct the metadata and insert it into the module.
const auto metaname = getMetadataName(CD_PREFIX, typeInfo);
llvm::NamedMDNode *node = gIR->module.getOrInsertNamedMetadata(metaname);
node->addOperand(llvm::MDNode::get(
gIR->context(), llvm::makeArrayRef(mdVals, CD_NumFields)));
node->addOperand(llvm::MDNode::get(gIR->context(), mdVals));
}
if (!define)
@ -738,8 +737,7 @@ LLConstant *IrClass::getClassInfoInterfaces() {
// create Interface struct
LLConstant *inits[3] = {ci, vtb, off};
LLConstant *entry =
LLConstantStruct::get(interface_type, llvm::makeArrayRef(inits, 3));
LLConstant *entry = LLConstantStruct::get(interface_type, inits);
constants.push_back(entry);
}

View file

@ -71,16 +71,14 @@ allocParam(llvm::IRBuilder<> &builder, llvm::Type &srcType,
if (param.type == ParamType::Aggregate && srcType.isPointerTy()) {
auto elemType = srcType.getPointerElementType();
auto stackArg = builder.CreateAlloca(elemType);
if (auto alignment = layout.getABITypeAlignment(elemType))
stackArg->setAlignment(llvm::Align(alignment));
stackArg->setAlignment(layout.getABITypeAlign(elemType));
auto init =
parseInitializer(layout, *elemType, param.data, errHandler, override);
builder.CreateStore(init, stackArg);
return stackArg;
}
auto stackArg = builder.CreateAlloca(&srcType);
if (auto alignment = layout.getABITypeAlignment(&srcType))
stackArg->setAlignment(llvm::Align(alignment));
stackArg->setAlignment(layout.getABITypeAlign(&srcType));
auto init =
parseInitializer(layout, srcType, param.data, errHandler, override);
builder.CreateStore(init, stackArg);