Skip to content
Snippets Groups Projects
Commit 2c28f251 authored by Markus Holzer's avatar Markus Holzer
Browse files

Small fix

parent 974ea00d
No related branches found
No related tags found
1 merge request!353Draft: Generalise usage of Structs for nested array access
......@@ -428,6 +428,8 @@ def resolve_struct_accesses(ast_node, block_to_insert=None):
if isinstance(expr, Struct.Access):
struct = expr.struct
struct_size = struct.struct_byte_size
base = TypedSymbol(f"_data_{struct.name}", struct.struct_pointer_type)
if isinstance(expr.element, Struct.Access):
inner_element = expr.element.element
inner_struct = expr.element.struct
......@@ -436,15 +438,17 @@ def resolve_struct_accesses(ast_node, block_to_insert=None):
inner_base = TypedSymbol(f"_data_{inner_struct.name}", inner_struct.struct_pointer_type)
struct_access = ast.ResolvedStructdAccess(inner_base, inner_struct_size * loop_ctr + offset)
rc = ReinterpretCastFunc(struct_access, inner_struct.members[inner_element][0])
base = TypedSymbol(f"_data_{struct.name}", struct.struct_pointer_type)
struct_access = ast.ResolvedStructdAccess(base, rc)
return visit_sympy_expr(struct_access, enclosing_block, sympy_assignment)
elif isinstance(expr.element, int):
offset = struct.offset(expr.element)
base = TypedSymbol(f"_data_{struct.name}", struct.struct_pointer_type)
struct_access = ast.ResolvedStructdAccess(base, struct_size * loop_ctr + offset)
rc = ReinterpretCastFunc(struct_access, struct.members[expr.element][0])
return visit_sympy_expr(rc, enclosing_block, sympy_assignment)
if expr.struct.double_pointer:
struct_access = ast.ResolvedStructdAccess(base, loop_ctr)
return visit_sympy_expr(struct_access, enclosing_block, sympy_assignment)
else:
offset = struct.offset(expr.element)
struct_access = ast.ResolvedStructdAccess(base, struct_size * loop_ctr + offset)
rc = ReinterpretCastFunc(struct_access, struct.members[expr.element][0])
return visit_sympy_expr(rc, enclosing_block, sympy_assignment)
else:
raise ValueError("Not supported for now")
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment