Skip to content

Commit c4631f3

Browse files
committed
use the llvm offset calculation for struct index
1 parent eb7761d commit c4631f3

4 files changed

+7
-7
lines changed

src/codegen/debug.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,6 @@ impl<'ink> DebugBuilder<'ink> {
303303
.unwrap_or_else(|| self.compile_unit.get_file());
304304

305305
let mut types = vec![];
306-
let mut offset = 0; //self.target_data.offset_of_element(&struct_type, element_index as u32).unwrap_or(0);
307306
for (element_index, (member_name, dt, location)) in index_types.into_iter().enumerate() {
308307
let di_type = self.get_or_create_debug_type(dt, index, types_index)?;
309308

@@ -312,6 +311,9 @@ impl<'ink> DebugBuilder<'ink> {
312311
.find_associated_type(dt.get_name())
313312
.map(|llvm_type| self.target_data.get_bit_size(&llvm_type))
314313
.unwrap_or(0);
314+
//Offset in bits
315+
let offset =
316+
self.target_data.offset_of_element(&struct_type, element_index as u32).unwrap_or(0) * 8;
315317

316318
types.push(
317319
self.debug_info
@@ -328,7 +330,6 @@ impl<'ink> DebugBuilder<'ink> {
328330
)
329331
.as_type(),
330332
);
331-
offset += size;
332333
}
333334

334335
let size = self.target_data.get_bit_size(&struct_type);

src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ entry:
4646
!4 = !{!5, !7}
4747
!5 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !6, size: 32, flags: DIFlagPublic)
4848
!6 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic)
49-
!7 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !8, size: 128, offset: 32, flags: DIFlagPublic)
49+
!7 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !8, size: 128, offset: 64, flags: DIFlagPublic)
5050
!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct2", scope: !2, file: !2, line: 8, size: 128, flags: DIFlagPublic, elements: !9, identifier: "myStruct2")
5151
!9 = !{!10, !11}
5252
!10 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 9, baseType: !6, size: 32, flags: DIFlagPublic)
53-
!11 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !12, size: 64, offset: 32, flags: DIFlagPublic)
53+
!11 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !12, size: 64, offset: 64, flags: DIFlagPublic)
5454
!12 = !DIBasicType(name: "LREAL", size: 64, encoding: DW_ATE_float, flags: DIFlagPublic)
5555
!13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression())
5656
!14 = distinct !DIGlobalVariable(name: "__myStruct2__init", scope: !2, file: !2, line: 8, type: !8, isLocal: false, isDefinition: true)

src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ entry:
3636
!5 = !{!6, !8, !10}
3737
!6 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !7, size: 32, flags: DIFlagPublic)
3838
!7 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic)
39-
!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 64, offset: 32, flags: DIFlagPublic)
39+
!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 64, offset: 64, flags: DIFlagPublic)
4040
!9 = !DIBasicType(name: "LREAL", size: 64, encoding: DW_ATE_float, flags: DIFlagPublic)
41-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 5, baseType: !11, size: 352, offset: 96, flags: DIFlagPublic)
41+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 5, baseType: !11, size: 352, offset: 128, flags: DIFlagPublic)
4242
!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 352, elements: !12)
4343
!12 = !{!13}
4444
!13 = !DISubrange(count: 11, lowerBound: 0)

src/typesystem.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use std::{
66
};
77

88
use anyhow::{anyhow, Result};
9-
use inkwell::types::StructType;
109
use plc_ast::{
1110
ast::{AstNode, AutoDerefType, Operator, PouType, TypeNature},
1211
literals::{AstLiteral, StringValue},

0 commit comments

Comments
 (0)