mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-03 00:20:40 +03:00
Fix some LLVM 16 deprecations wrt. DataLayout::getABITypeAlignment() and llvm::makeArrayRef()
This commit is contained in:
parent
2e39008fad
commit
c8857e8cb8
7 changed files with 14 additions and 23 deletions
|
@ -624,11 +624,10 @@ void initializeArrayLiteral(IRState *p, ArrayLiteralExp *ale,
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
LLConstant *DtoConstSlice(LLConstant *dim, LLConstant *ptr, Type *type) {
|
LLConstant *DtoConstSlice(LLConstant *dim, LLConstant *ptr, Type *type) {
|
||||||
LLConstant *values[2] = {dim, ptr};
|
LLConstant *values[2] = {dim, ptr};
|
||||||
llvm::ArrayRef<LLConstant *> valuesRef = llvm::makeArrayRef(values, 2);
|
|
||||||
LLStructType *lltype =
|
LLStructType *lltype =
|
||||||
type ? isaStruct(DtoType(type))
|
type ? isaStruct(DtoType(type))
|
||||||
: LLConstantStruct::getTypeForElements(gIR->context(), valuesRef);
|
: LLConstantStruct::getTypeForElements(gIR->context(), values);
|
||||||
return LLConstantStruct::get(lltype, valuesRef);
|
return LLConstantStruct::get(lltype, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -117,7 +117,7 @@ public:
|
||||||
if (Count && Count % NumTypesPerWord == 0) {
|
if (Count && Count % NumTypesPerWord == 0) {
|
||||||
using namespace llvm::support;
|
using namespace llvm::support;
|
||||||
uint64_t Swapped = endian::byte_swap<uint64_t, little>(Working);
|
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;
|
Working = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ public:
|
||||||
if (Working) {
|
if (Working) {
|
||||||
using namespace llvm::support;
|
using namespace llvm::support;
|
||||||
uint64_t Swapped = endian::byte_swap<uint64_t, little>(Working);
|
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.
|
// Finalize the MD5 and return the hash.
|
||||||
|
|
|
@ -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
|
// We need to explicitly zero any padding bytes as per TDPL §7.1.1 (and
|
||||||
// also match the struct type lowering code here).
|
// also match the struct type lowering code here).
|
||||||
const uint64_t fieldStart = llvm::alignTo(
|
const uint64_t fieldStart = llvm::alignTo(
|
||||||
prevFieldEnd, gDataLayout->getABITypeAlignment(C->getType()));
|
prevFieldEnd, gDataLayout->getABITypeAlign(C->getType()).value());
|
||||||
|
|
||||||
const uint64_t paddingBytes = fieldStart - prevFieldEnd;
|
const uint64_t paddingBytes = fieldStart - prevFieldEnd;
|
||||||
if (paddingBytes) {
|
if (paddingBytes) {
|
||||||
|
|
|
@ -102,7 +102,7 @@ void Target::_init(const Param ¶ms) {
|
||||||
realType = getRealType(triple);
|
realType = getRealType(triple);
|
||||||
realsize = gDataLayout->getTypeAllocSize(realType);
|
realsize = gDataLayout->getTypeAllocSize(realType);
|
||||||
realpad = realsize - gDataLayout->getTypeStoreSize(realType);
|
realpad = realsize - gDataLayout->getTypeStoreSize(realType);
|
||||||
realalignsize = gDataLayout->getABITypeAlignment(realType);
|
realalignsize = gDataLayout->getABITypeAlign(realType).value();
|
||||||
classinfosize = 0; // unused
|
classinfosize = 0; // unused
|
||||||
maxStaticDataSize = std::numeric_limits<unsigned long long>::max();
|
maxStaticDataSize = std::numeric_limits<unsigned long long>::max();
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ unsigned Target::alignsize(Type *type) {
|
||||||
if (type->ty == TY::Tvoid) {
|
if (type->ty == TY::Tvoid) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return gDataLayout->getABITypeAlignment(DtoType(type));
|
return gDataLayout->getABITypeAlign(DtoType(type)).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************
|
/******************************
|
||||||
|
|
|
@ -532,9 +532,7 @@ LLValue *DtoLoad(DLValue *src, const char *name) {
|
||||||
// the type.
|
// the type.
|
||||||
LLValue *DtoAlignedLoad(LLType *type, LLValue *src, const char *name) {
|
LLValue *DtoAlignedLoad(LLType *type, LLValue *src, const char *name) {
|
||||||
llvm::LoadInst *ld = DtoLoadImpl(type, src, name);
|
llvm::LoadInst *ld = DtoLoadImpl(type, src, name);
|
||||||
if (auto alignment = getABITypeAlign(ld->getType())) {
|
ld->setAlignment(gDataLayout->getABITypeAlign(ld->getType()));
|
||||||
ld->setAlignment(llvm::Align(alignment));
|
|
||||||
}
|
|
||||||
return ld;
|
return ld;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -570,9 +568,7 @@ void DtoAlignedStore(LLValue *src, LLValue *dst) {
|
||||||
assert(!src->getType()->isIntegerTy(1) &&
|
assert(!src->getType()->isIntegerTy(1) &&
|
||||||
"Should store bools as i8 instead of i1.");
|
"Should store bools as i8 instead of i1.");
|
||||||
llvm::StoreInst *st = gIR->ir->CreateStore(src, dst);
|
llvm::StoreInst *st = gIR->ir->CreateStore(src, dst);
|
||||||
if (auto alignment = getABITypeAlign(src->getType())) {
|
st->setAlignment(gDataLayout->getABITypeAlign(src->getType()));
|
||||||
st->setAlignment(llvm::Align(alignment));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -747,7 +743,7 @@ size_t getTypeStoreSize(LLType *t) { return gDataLayout->getTypeStoreSize(t); }
|
||||||
size_t getTypeAllocSize(LLType *t) { return gDataLayout->getTypeAllocSize(t); }
|
size_t getTypeAllocSize(LLType *t) { return gDataLayout->getTypeAllocSize(t); }
|
||||||
|
|
||||||
unsigned int getABITypeAlign(LLType *t) {
|
unsigned int getABITypeAlign(LLType *t) {
|
||||||
return gDataLayout->getABITypeAlignment(t);
|
return gDataLayout->getABITypeAlign(t).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -121,8 +121,7 @@ LLGlobalVariable *IrClass::getClassInfoSymbol(bool define) {
|
||||||
// Construct the metadata and insert it into the module.
|
// Construct the metadata and insert it into the module.
|
||||||
const auto metaname = getMetadataName(CD_PREFIX, typeInfo);
|
const auto metaname = getMetadataName(CD_PREFIX, typeInfo);
|
||||||
llvm::NamedMDNode *node = gIR->module.getOrInsertNamedMetadata(metaname);
|
llvm::NamedMDNode *node = gIR->module.getOrInsertNamedMetadata(metaname);
|
||||||
node->addOperand(llvm::MDNode::get(
|
node->addOperand(llvm::MDNode::get(gIR->context(), mdVals));
|
||||||
gIR->context(), llvm::makeArrayRef(mdVals, CD_NumFields)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!define)
|
if (!define)
|
||||||
|
@ -738,8 +737,7 @@ LLConstant *IrClass::getClassInfoInterfaces() {
|
||||||
|
|
||||||
// create Interface struct
|
// create Interface struct
|
||||||
LLConstant *inits[3] = {ci, vtb, off};
|
LLConstant *inits[3] = {ci, vtb, off};
|
||||||
LLConstant *entry =
|
LLConstant *entry = LLConstantStruct::get(interface_type, inits);
|
||||||
LLConstantStruct::get(interface_type, llvm::makeArrayRef(inits, 3));
|
|
||||||
constants.push_back(entry);
|
constants.push_back(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,16 +71,14 @@ allocParam(llvm::IRBuilder<> &builder, llvm::Type &srcType,
|
||||||
if (param.type == ParamType::Aggregate && srcType.isPointerTy()) {
|
if (param.type == ParamType::Aggregate && srcType.isPointerTy()) {
|
||||||
auto elemType = srcType.getPointerElementType();
|
auto elemType = srcType.getPointerElementType();
|
||||||
auto stackArg = builder.CreateAlloca(elemType);
|
auto stackArg = builder.CreateAlloca(elemType);
|
||||||
if (auto alignment = layout.getABITypeAlignment(elemType))
|
stackArg->setAlignment(layout.getABITypeAlign(elemType));
|
||||||
stackArg->setAlignment(llvm::Align(alignment));
|
|
||||||
auto init =
|
auto init =
|
||||||
parseInitializer(layout, *elemType, param.data, errHandler, override);
|
parseInitializer(layout, *elemType, param.data, errHandler, override);
|
||||||
builder.CreateStore(init, stackArg);
|
builder.CreateStore(init, stackArg);
|
||||||
return stackArg;
|
return stackArg;
|
||||||
}
|
}
|
||||||
auto stackArg = builder.CreateAlloca(&srcType);
|
auto stackArg = builder.CreateAlloca(&srcType);
|
||||||
if (auto alignment = layout.getABITypeAlignment(&srcType))
|
stackArg->setAlignment(layout.getABITypeAlign(&srcType));
|
||||||
stackArg->setAlignment(llvm::Align(alignment));
|
|
||||||
auto init =
|
auto init =
|
||||||
parseInitializer(layout, srcType, param.data, errHandler, override);
|
parseInitializer(layout, srcType, param.data, errHandler, override);
|
||||||
builder.CreateStore(init, stackArg);
|
builder.CreateStore(init, stackArg);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue