@@ -164,8 +164,9 @@ void *arena_alloc(arena_t *arena, int size)
164
164
abort ();
165
165
}
166
166
167
- /* Align to PTR_SIZE bytes */
168
- size = (size + PTR_SIZE - 1 ) & ~(PTR_SIZE - 1 );
167
+ /* Align to sizeof(void*) bytes for host compatibility */
168
+ int alignment = sizeof (void * );
169
+ size = (size + alignment - 1 ) & ~(alignment - 1 );
169
170
170
171
if (!arena -> head || arena -> head -> offset + size > arena -> head -> capacity ) {
171
172
/* Need a new block: choose capacity = max(DEFAULT_ARENA_SIZE,
@@ -307,17 +308,17 @@ symbol_t *arena_alloc_symbol(void)
307
308
308
309
constant_t * arena_alloc_constant (void )
309
310
{
310
- return arena_alloc (GENERAL_ARENA , sizeof (constant_t ));
311
+ return arena_calloc (GENERAL_ARENA , 1 , sizeof (constant_t ));
311
312
}
312
313
313
314
alias_t * arena_alloc_alias (void )
314
315
{
315
- return arena_alloc (GENERAL_ARENA , sizeof (alias_t ));
316
+ return arena_calloc (GENERAL_ARENA , 1 , sizeof (alias_t ));
316
317
}
317
318
318
319
macro_t * arena_alloc_macro (void )
319
320
{
320
- return arena_alloc (GENERAL_ARENA , sizeof (macro_t ));
321
+ return arena_calloc (GENERAL_ARENA , 1 , sizeof (macro_t ));
321
322
}
322
323
323
324
bb_traversal_args_t * arena_alloc_traversal_args (void )
@@ -613,7 +614,7 @@ ph2_ir_t *add_existed_ph2_ir(ph2_ir_t *ph2_ir)
613
614
614
615
ph2_ir_t * add_ph2_ir (opcode_t op )
615
616
{
616
- ph2_ir_t * ph2_ir = arena_alloc (BB_ARENA , sizeof (ph2_ir_t ));
617
+ ph2_ir_t * ph2_ir = arena_calloc (BB_ARENA , 1 , sizeof (ph2_ir_t ));
617
618
ph2_ir -> op = op ;
618
619
/* Set safe defaults; arch-lowering may annotate later */
619
620
ph2_ir -> next = NULL ;
@@ -630,7 +631,7 @@ void set_var_liveout(var_t *var, int end)
630
631
631
632
block_t * add_block (block_t * parent , func_t * func , macro_t * macro )
632
633
{
633
- block_t * blk = arena_alloc (BLOCK_ARENA , sizeof (block_t ));
634
+ block_t * blk = arena_calloc (BLOCK_ARENA , 1 , sizeof (block_t ));
634
635
635
636
blk -> parent = parent ;
636
637
blk -> func = func ;
@@ -884,7 +885,7 @@ func_t *find_func(char *func_name)
884
885
/* Create a basic block and set the scope of variables to 'parent' block */
885
886
basic_block_t * bb_create (block_t * parent )
886
887
{
887
- basic_block_t * bb = arena_alloc (BB_ARENA , sizeof (basic_block_t ));
888
+ basic_block_t * bb = arena_calloc (BB_ARENA , 1 , sizeof (basic_block_t ));
888
889
889
890
for (int i = 0 ; i < MAX_BB_PRED ; i ++ ) {
890
891
bb -> prev [i ].bb = NULL ;
@@ -1000,7 +1001,7 @@ void add_insn(block_t *block,
1000
1001
1001
1002
bb -> scope = block ;
1002
1003
1003
- insn_t * n = arena_alloc (INSN_ARENA , sizeof (insn_t ));
1004
+ insn_t * n = arena_calloc (INSN_ARENA , 1 , sizeof (insn_t ));
1004
1005
n -> opcode = op ;
1005
1006
n -> rd = rd ;
1006
1007
n -> rs1 = rs1 ;
0 commit comments