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/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()};