Remove temporary tuple fix alloca instructions if they are never used

This commit is contained in:
gingerBill
2025-12-27 11:53:01 +00:00
parent 40eab9991e
commit de761cbdd3
2 changed files with 9 additions and 10 deletions

View File

@@ -309,7 +309,15 @@ gb_internal void lb_run_remove_dead_instruction_pass(lbProcedure *p) {
// NOTE(bill): Explicit instructions are set here because some instructions could have side effects
switch (LLVMGetInstructionOpcode(curr_instr)) {
// case LLVMAlloca:
case LLVMAlloca:
if (map_get(&p->tuple_fix_map, curr_instr) != nullptr) {
// NOTE(bill, 2025-12-27): Remove temporary tuple fix alloca instructions
// if they are never used
removal_count += 1;
LLVMInstructionEraseFromParent(curr_instr);
was_dead_instructions = true;
}
break;
case LLVMLoad:
if (LLVMGetVolatile(curr_instr)) {
break;

View File

@@ -1212,15 +1212,6 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> c
}
tuple_fix_values[ret_count-1] = result;
#if 0
for (isize j = 0; j < ret_count; j++) {
tuple_geps[j] = lb_emit_struct_ep(p, result_ptr, cast(i32)j);
}
for (isize j = 0; j < ret_count; j++) {
lb_emit_store(p, tuple_geps[j], tuple_fix_values[j]);
}
#endif
result = lb_emit_load(p, result_ptr);
lbTupleFix tf = {tuple_fix_values};