@@ -51,7 +51,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
5151
5252 if field_name in struct_info ["fields" ]:
5353 field_idx = struct_info ["fields" ][field_name ]
54- struct_ptr = local_sym_tab [var_name ]
54+ struct_ptr = local_sym_tab [var_name ][ 0 ]
5555 field_ptr = builder .gep (
5656 struct_ptr , [ir .Constant (ir .IntType (32 ), 0 ),
5757 ir .Constant (ir .IntType (32 ), field_idx )],
@@ -68,17 +68,17 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
6868 if isinstance (rval .value , bool ):
6969 if rval .value :
7070 builder .store (ir .Constant (ir .IntType (1 ), 1 ),
71- local_sym_tab [var_name ])
71+ local_sym_tab [var_name ][ 0 ] )
7272 else :
7373 builder .store (ir .Constant (ir .IntType (1 ), 0 ),
74- local_sym_tab [var_name ])
74+ local_sym_tab [var_name ][ 0 ] )
7575 print (f"Assigned constant { rval .value } to { var_name } " )
7676 elif isinstance (rval .value , int ):
7777 # Assume c_int64 for now
7878 # var = builder.alloca(ir.IntType(64), name=var_name)
7979 # var.align = 8
8080 builder .store (ir .Constant (ir .IntType (64 ), rval .value ),
81- local_sym_tab [var_name ])
81+ local_sym_tab [var_name ][ 0 ] )
8282 # local_sym_tab[var_name] = var
8383 print (f"Assigned constant { rval .value } to { var_name } " )
8484 elif isinstance (rval .value , str ):
@@ -92,7 +92,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
9292 global_str .initializer = str_const
9393 str_ptr = builder .bitcast (
9494 global_str , ir .PointerType (ir .IntType (8 )))
95- builder .store (str_ptr , local_sym_tab [var_name ])
95+ builder .store (str_ptr , local_sym_tab [var_name ][ 0 ] )
9696 print (f"Assigned string constant '{ rval .value } ' to { var_name } " )
9797 else :
9898 print ("Unsupported constant type" )
@@ -105,7 +105,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
105105 # var = builder.alloca(ir_type, name=var_name)
106106 # var.align = ir_type.width // 8
107107 builder .store (ir .Constant (
108- ir_type , rval .args [0 ].value ), local_sym_tab [var_name ])
108+ ir_type , rval .args [0 ].value ), local_sym_tab [var_name ][ 0 ] )
109109 print (f"Assigned { call_type } constant "
110110 f"{ rval .args [0 ].value } to { var_name } " )
111111 # local_sym_tab[var_name] = var
@@ -114,7 +114,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
114114 # var.align = 8
115115 val = handle_helper_call (
116116 rval , module , builder , func , local_sym_tab , map_sym_tab , structs_sym_tab , local_var_metadata )
117- builder .store (val , local_sym_tab [var_name ])
117+ builder .store (val , local_sym_tab [var_name ][ 0 ] )
118118 # local_sym_tab[var_name] = var
119119 print (f"Assigned constant { rval .func .id } to { var_name } " )
120120 elif call_type == "deref" and len (rval .args ) == 1 :
@@ -125,7 +125,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
125125 print ("Failed to evaluate deref argument" )
126126 return
127127 print (f"Dereferenced value: { val } , storing in { var_name } " )
128- builder .store (val , local_sym_tab [var_name ])
128+ builder .store (val , local_sym_tab [var_name ][ 0 ] )
129129 # local_sym_tab[var_name] = var
130130 print (f"Dereferenced and assigned to { var_name } " )
131131 elif call_type in structs_sym_tab and len (rval .args ) == 0 :
@@ -134,7 +134,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
134134 # var = builder.alloca(ir_type, name=var_name)
135135 # Null init
136136 builder .store (ir .Constant (ir_type , None ),
137- local_sym_tab [var_name ])
137+ local_sym_tab [var_name ][ 0 ] )
138138 local_var_metadata [var_name ] = call_type
139139 print (f"Assigned struct { call_type } to { var_name } " )
140140 # local_sym_tab[var_name] = var
@@ -155,7 +155,7 @@ def handle_assign(func, module, builder, stmt, map_sym_tab, local_sym_tab, struc
155155 rval , module , builder , func , local_sym_tab , map_sym_tab , structs_sym_tab , local_var_metadata )
156156 # var = builder.alloca(ir.IntType(64), name=var_name)
157157 # var.align = 8
158- builder .store (val , local_sym_tab [var_name ])
158+ builder .store (val , local_sym_tab [var_name ][ 0 ] )
159159 # local_sym_tab[var_name] = var
160160 else :
161161 print ("Unsupported assignment call structure" )
@@ -179,7 +179,7 @@ def handle_cond(func, module, builder, cond, local_sym_tab, map_sym_tab):
179179 return None
180180 elif isinstance (cond , ast .Name ):
181181 if cond .id in local_sym_tab :
182- var = local_sym_tab [cond .id ]
182+ var = local_sym_tab [cond .id ][ 0 ]
183183 val = builder .load (var )
184184 if val .type != ir .IntType (1 ):
185185 # Convert nonzero values to true, zero to false
0 commit comments