Skip to content

Commit 274ab74

Browse files
committed
llvm: fix usages of LLVMABIAlignmentOfType and LLVMABIOffsetOfElement
return value is in bytes, not bits
1 parent 2a95289 commit 274ab74

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

llvm-backend/src/main/kotlin/io/github/tmarsteel/emerge/backend/llvm/dsl/LlvmType.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ abstract class LlvmNamedStructType(
283283
return diBuilder.createStructType(
284284
name,
285285
Llvm.LLVMSizeOfTypeInBits(diBuilder.context.targetData.ref, rawStructType).toULong(),
286-
Llvm.LLVMABIAlignmentOfType(diBuilder.context.targetData.ref, rawStructType).toUInt(),
286+
Llvm.LLVMABIAlignmentOfType(diBuilder.context.targetData.ref, rawStructType).toUInt() * 8u,
287287
flags,
288288
null,
289289
declaredAt,
@@ -378,7 +378,7 @@ class LlvmArrayType<Element : LlvmType>(
378378
return diBuilder.createArrayType(
379379
elementType.getDiType(diBuilder),
380380
elementCount.toULong(),
381-
Llvm.LLVMABIAlignmentOfType(diBuilder.context.targetData.ref, getRawInContext(diBuilder.context)).toUInt(),
381+
Llvm.LLVMABIAlignmentOfType(diBuilder.context.targetData.ref, getRawInContext(diBuilder.context)).toUInt() * 8u,
382382
)
383383
}
384384

llvm-backend/src/main/kotlin/io/github/tmarsteel/emerge/backend/llvm/intrinsics/EmergeClassType.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ internal class EmergeClassType private constructor(
137137
diStructType = diBuilder.createStructType(
138138
irClass.canonicalName.toString(),
139139
Llvm.LLVMSizeOfTypeInBits(context.targetData.ref, structRef).toULong(),
140-
Llvm.LLVMABIAlignmentOfType(context.targetData.ref, structRef).toUInt(),
140+
Llvm.LLVMABIAlignmentOfType(context.targetData.ref, structRef).toUInt() * 8u,
141141
NativeI32FlagGroup(),
142142
irClass.memberVariables
143143
.filter { it.readStrategy is IrClass.MemberVariable.AccessStrategy.BareField && it.writeStrategy is IrClass.MemberVariable.AccessStrategy.BareField }
@@ -152,7 +152,7 @@ internal class EmergeClassType private constructor(
152152
irMember.name,
153153
memberDiType.sizeInBits,
154154
memberDiType.alignInBits,
155-
Llvm.LLVMOffsetOfElement(diBuilder.context.targetData.ref, structRef, field.indexInLlvmStruct!!).toULong(),
155+
Llvm.LLVMOffsetOfElement(diBuilder.context.targetData.ref, structRef, field.indexInLlvmStruct!!).toULong() * 8u,
156156
memberDiType,
157157
NativeI32FlagGroup(),
158158
irMember.declaredAt,

0 commit comments

Comments
 (0)