diff --git a/llvm/include/llvm/Support/TypeSize.h b/llvm/include/llvm/Support/TypeSize.h --- a/llvm/include/llvm/Support/TypeSize.h +++ b/llvm/include/llvm/Support/TypeSize.h @@ -149,6 +149,9 @@ // Returns true if the type size is non-zero. bool isNonZero() const { return MinSize != 0; } + // Returns true if the type size is zero. + bool isZero() const { return MinSize == 0; } + // Casts to a uint64_t if this is a fixed-width size. // // This interface is deprecated and will be removed in a future version diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp --- a/llvm/lib/Analysis/ConstantFolding.cpp +++ b/llvm/lib/Analysis/ConstantFolding.cpp @@ -363,7 +363,7 @@ Constant *ElemC; do { ElemC = C->getAggregateElement(Elem++); - } while (ElemC && DL.getTypeSizeInBits(ElemC->getType()) == 0); + } while (ElemC && DL.getTypeSizeInBits(ElemC->getType()).isZero()); C = ElemC; } else { C = C->getAggregateElement(0u); diff --git a/llvm/lib/CodeGen/LowLevelType.cpp b/llvm/lib/CodeGen/LowLevelType.cpp --- a/llvm/lib/CodeGen/LowLevelType.cpp +++ b/llvm/lib/CodeGen/LowLevelType.cpp @@ -34,9 +34,10 @@ if (Ty.isSized()) { // Aggregates are no different from real scalars as far as GlobalISel is // concerned. - auto SizeInBits = DL.getTypeSizeInBits(&Ty); - assert(SizeInBits != 0 && "invalid zero-sized type"); - return LLT::scalar(SizeInBits); + TypeSize SizeInBits = DL.getTypeSizeInBits(&Ty); + assert(SizeInBits.isNonZero() && "invalid zero-sized type"); + assert(!SizeInBits.isScalable() && "Invalid TypeSize."); + return LLT::scalar(SizeInBits.getKnownMinSize()); } return LLT(); diff --git a/llvm/lib/Target/AArch64/AArch64CallLowering.cpp b/llvm/lib/Target/AArch64/AArch64CallLowering.cpp --- a/llvm/lib/Target/AArch64/AArch64CallLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64CallLowering.cpp @@ -420,7 +420,7 @@ SmallVector SplitArgs; unsigned i = 0; for (auto &Arg : F.args()) { - if (DL.getTypeStoreSize(Arg.getType()) == 0) + if (DL.getTypeStoreSize(Arg.getType()).isZero()) continue; ArgInfo OrigArg{VRegs[i], Arg.getType()};