@@ -1176,7 +1176,7 @@ void ir_build_def_use_lists(ir_ctx *ctx)
1176
1176
use_list -> count = 0 ;
1177
1177
}
1178
1178
1179
- edges = ir_mem_malloc (edges_count * sizeof (ir_ref ));
1179
+ edges = ir_mem_malloc (IR_ALIGNED_SIZE ( edges_count * sizeof (ir_ref ), 4096 ));
1180
1180
for (i = IR_UNUSED + 1 , insn = ctx -> ir_base + i ; i < ctx -> insns_count ;) {
1181
1181
n = insn -> inputs_count ;
1182
1182
for (j = n , p = insn -> ops + 1 ; j > 0 ; j -- , p ++ ) {
@@ -1245,7 +1245,7 @@ void ir_build_def_use_lists(ir_ctx *ctx)
1245
1245
}
1246
1246
1247
1247
ctx -> use_edges_count = edges_count ;
1248
- edges = ir_mem_malloc (edges_count * sizeof (ir_ref ));
1248
+ edges = ir_mem_malloc (IR_ALIGNED_SIZE ( edges_count * sizeof (ir_ref ), 4096 ));
1249
1249
for (use_list = lists + ctx -> insns_count - 1 ; use_list != lists ; use_list -- ) {
1250
1250
n = use_list -> refs ;
1251
1251
if (n ) {
@@ -1356,8 +1356,13 @@ bool ir_use_list_add(ir_ctx *ctx, ir_ref to, ir_ref ref)
1356
1356
use_list -> count ++ ;
1357
1357
return 0 ;
1358
1358
} else {
1359
- /* Reallocate the whole edges buffer (this is inefficient) */
1360
- ctx -> use_edges = ir_mem_realloc (ctx -> use_edges , (ctx -> use_edges_count + use_list -> count + 1 ) * sizeof (ir_ref ));
1359
+ size_t old_size = IR_ALIGNED_SIZE (ctx -> use_edges_count * sizeof (ir_ref ), 4096 );
1360
+ size_t new_size = IR_ALIGNED_SIZE ((ctx -> use_edges_count + use_list -> count + 1 ) * sizeof (ir_ref ), 4096 );
1361
+
1362
+ if (old_size < new_size ) {
1363
+ /* Reallocate the whole edges buffer (this is inefficient) */
1364
+ ctx -> use_edges = ir_mem_realloc (ctx -> use_edges , new_size );
1365
+ }
1361
1366
memcpy (ctx -> use_edges + ctx -> use_edges_count , ctx -> use_edges + use_list -> refs , use_list -> count * sizeof (ir_ref ));
1362
1367
use_list -> refs = ctx -> use_edges_count ;
1363
1368
ctx -> use_edges [use_list -> refs + use_list -> count ] = ref ;
0 commit comments