Skip to content

Commit 08ce821

Browse files
committed
If the element type of a B.FA is empty, set its storage type in LLVM to just the padding
1 parent 445824d commit 08ce821

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

lib/IRGen/GenArray.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,15 @@ class FixedArrayTypeInfoBase : public ArrayTypeInfoBase<BaseTypeInfo> {
206206
uint64_t paddingBytes = elementTI.getFixedStride().getValue()
207207
- elementTI.getFixedSize().getValue();
208208
auto byteTy = llvm::IntegerType::get(LLVMContext, 8);
209-
elementTy = llvm::StructType::get(LLVMContext,
210-
{elementTy,
211-
llvm::ArrayType::get(byteTy, paddingBytes)},
212-
/*packed*/ true);
209+
auto paddingArrayTy = llvm::ArrayType::get(byteTy, paddingBytes);
210+
211+
if (elementTI.getFixedSize() == Size(0)) {
212+
elementTy = paddingArrayTy;
213+
} else {
214+
elementTy = llvm::StructType::get(LLVMContext,
215+
{elementTy, paddingArrayTy},
216+
/*packed*/ true);
217+
}
213218
}
214219

215220
return llvm::ArrayType::get(elementTy, arraySize);

0 commit comments

Comments
 (0)