Remove local_var_metadata from expr_pass

This commit is contained in:
Pragyansh Chaturvedi
2025-10-02 04:44:14 +05:30
parent 9223d7b5c5
commit 0142381ce2

View File

@ -10,10 +10,8 @@ def eval_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab=None, structs_sym_tab=None,
local_var_metadata=None,
): ):
print(f"Evaluating expression: {ast.dump(expr)}") print(f"Evaluating expression: {ast.dump(expr)}")
print(local_var_metadata)
if isinstance(expr, ast.Name): if isinstance(expr, ast.Name):
if expr.id in local_sym_tab: if expr.id in local_sym_tab:
var = local_sym_tab[expr.id][0] var = local_sym_tab[expr.id][0]
@ -72,7 +70,6 @@ def eval_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab, structs_sym_tab,
local_var_metadata,
) )
elif isinstance(expr.func, ast.Attribute): elif isinstance(expr.func, ast.Attribute):
print(f"Handling method call: {ast.dump(expr.func)}") print(f"Handling method call: {ast.dump(expr.func)}")
@ -89,7 +86,6 @@ def eval_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab, structs_sym_tab,
local_var_metadata,
) )
elif isinstance(expr.func.value, ast.Name): elif isinstance(expr.func.value, ast.Name):
obj_name = expr.func.value.id obj_name = expr.func.value.id
@ -104,7 +100,6 @@ def eval_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab, structs_sym_tab,
local_var_metadata,
) )
elif isinstance(expr, ast.Attribute): elif isinstance(expr, ast.Attribute):
if isinstance(expr.value, ast.Name): if isinstance(expr.value, ast.Name):
@ -114,14 +109,12 @@ def eval_expr(
var_ptr, var_type = local_sym_tab[var_name] var_ptr, var_type = local_sym_tab[var_name]
print(f"Loading attribute " f"{attr_name} from variable {var_name}") print(f"Loading attribute " f"{attr_name} from variable {var_name}")
print(f"Variable type: {var_type}, Variable ptr: {var_ptr}") print(f"Variable type: {var_type}, Variable ptr: {var_ptr}")
print(local_var_metadata) metadata = structs_sym_tab[local_sym_tab[var_name].metadata]
if local_var_metadata and var_name in local_var_metadata: if attr_name in metadata.fields:
metadata = structs_sym_tab[local_var_metadata[var_name]] gep = metadata.gep(builder, var_ptr, attr_name)
if attr_name in metadata.fields: val = builder.load(gep)
gep = metadata.gep(builder, var_ptr, attr_name) field_type = metadata.field_type(attr_name)
val = builder.load(gep) return val, field_type
field_type = metadata.field_type(attr_name)
return val, field_type
print("Unsupported expression evaluation") print("Unsupported expression evaluation")
return None return None
@ -134,11 +127,9 @@ def handle_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab, structs_sym_tab,
local_var_metadata,
): ):
"""Handle expression statements in the function body.""" """Handle expression statements in the function body."""
print(f"Handling expression: {ast.dump(expr)}") print(f"Handling expression: {ast.dump(expr)}")
print(local_var_metadata)
call = expr.value call = expr.value
if isinstance(call, ast.Call): if isinstance(call, ast.Call):
eval_expr( eval_expr(
@ -149,7 +140,6 @@ def handle_expr(
local_sym_tab, local_sym_tab,
map_sym_tab, map_sym_tab,
structs_sym_tab, structs_sym_tab,
local_var_metadata,
) )
else: else:
print("Unsupported expression type") print("Unsupported expression type")