ir.c
// When the parser completes, each jmp target is a nop with its own label. This
// can lead to consecutive nops with different labels. Merge those nops and labels
// into one.
When the parser completes, each jmp target is a nop with its own label. This
can lead to consecutive nops with different labels. Merge those nops and labels
into one.
When the parser completes each jmp target is a nop with its own label . This can lead to consecutive nops with different labels . Merge those nops and labels into one .
void merge_consecutive_labels(Function *function) {
    int i = 0;
    for (Tac *tac = function->ir; tac; tac = tac->next) {
        merge_labels(ir, tac, i);
        i++;
    }
}
void merge_consecutive_labels ( Function * function ) { int i = 0 ; for ( Tac * tac = function -> ir ; tac ; tac = tac -> next ) { merge_labels ( ir , tac , i ) ; i ++ ; } }
When the parser completes, each jmp target is a nop with its own label.
When the parser completes each jmp target is a nop with its own label .