Skip to content

Commit 529b0bd

Browse files
committed
Fix local_sym_tab accesses in functions_pass
1 parent 943697a commit 529b0bd

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

pythonbpf/functions_pass.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)