@@ -104,7 +104,7 @@ void bb_build_rpo(func_t *func, basic_block_t *bb)
104
104
105
105
void build_rpo (void )
106
106
{
107
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
107
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
108
108
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
109
109
args -> func = func ;
110
110
args -> bb = func -> bbs ;
@@ -121,7 +121,6 @@ void build_rpo(void)
121
121
args -> postorder_cb = bb_build_rpo ;
122
122
bb_forward_traversal (args );
123
123
}
124
- free (args );
125
124
}
126
125
127
126
basic_block_t * intersect (basic_block_t * i , basic_block_t * j )
@@ -221,7 +220,7 @@ void bb_build_dom(func_t *func, basic_block_t *bb)
221
220
222
221
void build_dom (void )
223
222
{
224
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
223
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
225
224
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
226
225
args -> func = func ;
227
226
args -> bb = func -> bbs ;
@@ -230,7 +229,6 @@ void build_dom(void)
230
229
args -> preorder_cb = bb_build_dom ;
231
230
bb_forward_traversal (args );
232
231
}
233
- free (args );
234
232
}
235
233
236
234
void bb_build_df (func_t * func , basic_block_t * bb )
@@ -256,7 +254,7 @@ void bb_build_df(func_t *func, basic_block_t *bb)
256
254
257
255
void build_df (void )
258
256
{
259
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
257
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
260
258
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
261
259
args -> func = func ;
262
260
args -> bb = func -> bbs ;
@@ -265,7 +263,6 @@ void build_df(void)
265
263
args -> postorder_cb = bb_build_df ;
266
264
bb_forward_traversal (args );
267
265
}
268
- free (args );
269
266
}
270
267
271
268
basic_block_t * reverse_intersect (basic_block_t * i , basic_block_t * j )
@@ -351,7 +348,7 @@ void bb_build_rdom(func_t *func, basic_block_t *bb)
351
348
352
349
void build_rdom (void )
353
350
{
354
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
351
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
355
352
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
356
353
args -> func = func ;
357
354
args -> bb = func -> exit ;
@@ -360,7 +357,6 @@ void build_rdom(void)
360
357
args -> preorder_cb = bb_build_rdom ;
361
358
bb_backward_traversal (args );
362
359
}
363
- free (args );
364
360
}
365
361
366
362
void bb_build_rdf (func_t * func , basic_block_t * bb )
@@ -396,7 +392,7 @@ void bb_build_rdf(func_t *func, basic_block_t *bb)
396
392
397
393
void build_rdf (void )
398
394
{
399
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
395
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
400
396
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
401
397
args -> func = func ;
402
398
args -> bb = func -> exit ;
@@ -405,7 +401,6 @@ void build_rdf(void)
405
401
args -> postorder_cb = bb_build_rdf ;
406
402
bb_backward_traversal (args );
407
403
}
408
- free (args );
409
404
}
410
405
411
406
void use_chain_add_tail (insn_t * i , var_t * var )
@@ -488,7 +483,7 @@ void var_add_killed_bb(var_t *var, basic_block_t *bb)
488
483
if (found )
489
484
return ;
490
485
491
- ref = calloc ( 1 , sizeof (ref_block_t ));
486
+ ref = arena_calloc ( GENERAL_ARENA , 1 , sizeof (ref_block_t ));
492
487
ref -> bb = bb ;
493
488
if (!var -> ref_block_list .head )
494
489
var -> ref_block_list .head = ref ;
@@ -511,7 +506,7 @@ void fn_add_global(func_t *func, var_t *var)
511
506
if (found )
512
507
return ;
513
508
514
- sym = calloc ( 1 , sizeof ( symbol_t ) );
509
+ sym = arena_alloc_symbol ( );
515
510
sym -> var = var ;
516
511
if (!func -> global_sym_list .head ) {
517
512
sym -> index = 0 ;
@@ -544,7 +539,7 @@ void bb_solve_globals(func_t *func, basic_block_t *bb)
544
539
545
540
void solve_globals (void )
546
541
{
547
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
542
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
548
543
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
549
544
args -> func = func ;
550
545
args -> bb = func -> bbs ;
@@ -553,7 +548,6 @@ void solve_globals(void)
553
548
args -> postorder_cb = bb_solve_globals ;
554
549
bb_forward_traversal (args );
555
550
}
556
- free (args );
557
551
}
558
552
559
553
bool var_check_in_scope (var_t * var , block_t * block )
@@ -723,7 +717,7 @@ void pop_name(var_t *var)
723
717
724
718
void append_phi_operand (insn_t * insn , var_t * var , basic_block_t * bb_from )
725
719
{
726
- phi_operand_t * op = calloc ( 1 , sizeof (phi_operand_t ));
720
+ phi_operand_t * op = arena_calloc ( GENERAL_ARENA , 1 , sizeof (phi_operand_t ));
727
721
op -> from = bb_from ;
728
722
op -> var = get_stack_top_subscript_var (var );
729
723
@@ -863,7 +857,7 @@ void bb_unwind_phi(func_t *func, basic_block_t *bb)
863
857
864
858
void unwind_phi (void )
865
859
{
866
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
860
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
867
861
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
868
862
args -> func = func ;
869
863
args -> bb = func -> bbs ;
@@ -872,7 +866,6 @@ void unwind_phi(void)
872
866
args -> preorder_cb = bb_unwind_phi ;
873
867
bb_forward_traversal (args );
874
868
}
875
- free (args );
876
869
}
877
870
878
871
#ifdef __SHECC__
@@ -1599,7 +1592,7 @@ void bb_build_reversed_rpo(func_t *func, basic_block_t *bb)
1599
1592
1600
1593
void build_reversed_rpo (void )
1601
1594
{
1602
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
1595
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
1603
1596
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
1604
1597
func -> bb_cnt = 0 ;
1605
1598
args -> func = func ;
@@ -1617,7 +1610,6 @@ void build_reversed_rpo(void)
1617
1610
args -> postorder_cb = bb_build_reversed_rpo ;
1618
1611
bb_backward_traversal (args );
1619
1612
}
1620
- free (args );
1621
1613
}
1622
1614
1623
1615
void bb_reset_live_kill_idx (func_t * func , basic_block_t * bb )
@@ -1749,7 +1741,7 @@ bool recompute_live_out(basic_block_t *bb)
1749
1741
1750
1742
void liveness_analysis (void )
1751
1743
{
1752
- bb_traversal_args_t * args = calloc ( 1 , sizeof ( bb_traversal_args_t ) );
1744
+ bb_traversal_args_t * args = arena_alloc_traversal_args ( );
1753
1745
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
1754
1746
args -> func = func ;
1755
1747
args -> bb = func -> bbs ;
@@ -1765,7 +1757,6 @@ void liveness_analysis(void)
1765
1757
args -> preorder_cb = bb_solve_locals ;
1766
1758
bb_forward_traversal (args );
1767
1759
}
1768
- free (args );
1769
1760
1770
1761
for (func_t * func = FUNC_LIST .head ; func ; func = func -> next ) {
1771
1762
basic_block_t * bb = func -> exit ;
0 commit comments