reduce the size of IrInstruction by 8 bytes on 64 bit targets
This brings the std lib tests down from 3.51 GiB memory usage to 3.41 GiB, by making two fields that were 64 bits 32 bits. This is a small thing; the bigger wins will come from the strategy outlined in the previous commit.master
parent
fa9f1d2396
commit
4e98512344
|
@ -2569,12 +2569,12 @@ enum IrInstructionId {
|
|||
struct IrInstruction {
|
||||
Scope *scope;
|
||||
AstNode *source_node;
|
||||
ConstExprValue value;
|
||||
size_t debug_id;
|
||||
LLVMValueRef llvm_value;
|
||||
ConstExprValue value;
|
||||
uint32_t debug_id;
|
||||
// if ref_count is zero and the instruction has no side effects,
|
||||
// the instruction can be omitted in codegen
|
||||
size_t ref_count;
|
||||
uint32_t ref_count;
|
||||
// When analyzing IR, instructions that point to this instruction in the "old ir"
|
||||
// can find the instruction that corresponds to this value in the "new ir"
|
||||
// with this child field.
|
||||
|
|
|
@ -10822,7 +10822,8 @@ static IrInstruction *ira_suspend(IrAnalyze *ira, IrInstruction *old_instruction
|
|||
IrSuspendPosition *suspend_pos)
|
||||
{
|
||||
if (ira->codegen->verbose_ir) {
|
||||
fprintf(stderr, "suspend %s_%zu %s_%zu #%zu (%zu,%zu)\n", ira->old_irb.current_basic_block->name_hint,
|
||||
fprintf(stderr, "suspend %s_%zu %s_%zu #%" PRIu32 " (%zu,%zu)\n",
|
||||
ira->old_irb.current_basic_block->name_hint,
|
||||
ira->old_irb.current_basic_block->debug_id,
|
||||
ira->old_irb.exec->basic_block_list.at(ira->old_bb_index)->name_hint,
|
||||
ira->old_irb.exec->basic_block_list.at(ira->old_bb_index)->debug_id,
|
||||
|
@ -10860,7 +10861,7 @@ static IrInstruction *ira_resume(IrAnalyze *ira) {
|
|||
ira->instruction_index = pos.instruction_index;
|
||||
assert(pos.instruction_index < ira->old_irb.current_basic_block->instruction_list.length);
|
||||
if (ira->codegen->verbose_ir) {
|
||||
fprintf(stderr, "%s_%zu #%zu\n", ira->old_irb.current_basic_block->name_hint,
|
||||
fprintf(stderr, "%s_%zu #%" PRIu32 "\n", ira->old_irb.current_basic_block->name_hint,
|
||||
ira->old_irb.current_basic_block->debug_id,
|
||||
ira->old_irb.current_basic_block->instruction_list.at(pos.instruction_index)->debug_id);
|
||||
}
|
||||
|
@ -26328,7 +26329,7 @@ ZigType *ir_analyze(CodeGen *codegen, IrExecutable *old_exec, IrExecutable *new_
|
|||
}
|
||||
|
||||
if (ira->codegen->verbose_ir) {
|
||||
fprintf(stderr, "analyze #%zu\n", old_instruction->debug_id);
|
||||
fprintf(stderr, "analyze #%" PRIu32 "\n", old_instruction->debug_id);
|
||||
}
|
||||
IrInstruction *new_instruction = ir_analyze_instruction_base(ira, old_instruction);
|
||||
if (new_instruction != nullptr) {
|
||||
|
|
|
@ -385,8 +385,8 @@ static void ir_print_prefix(IrPrint *irp, IrInstruction *instruction, bool trail
|
|||
const char mark = trailing ? ':' : '#';
|
||||
const char *type_name = instruction->value.type ? buf_ptr(&instruction->value.type->name) : "(unknown)";
|
||||
const char *ref_count = ir_has_side_effects(instruction) ?
|
||||
"-" : buf_ptr(buf_sprintf("%" ZIG_PRI_usize "", instruction->ref_count));
|
||||
fprintf(irp->f, "%c%-3zu| %-22s| %-12s| %-2s| ", mark, instruction->debug_id,
|
||||
"-" : buf_ptr(buf_sprintf("%" PRIu32 "", instruction->ref_count));
|
||||
fprintf(irp->f, "%c%-3" PRIu32 "| %-22s| %-12s| %-2s| ", mark, instruction->debug_id,
|
||||
ir_instruction_type_str(instruction->id), type_name, ref_count);
|
||||
}
|
||||
|
||||
|
@ -398,7 +398,7 @@ static void ir_print_const_value(IrPrint *irp, ConstExprValue *const_val) {
|
|||
}
|
||||
|
||||
static void ir_print_var_instruction(IrPrint *irp, IrInstruction *instruction) {
|
||||
fprintf(irp->f, "#%" ZIG_PRI_usize "", instruction->debug_id);
|
||||
fprintf(irp->f, "#%" PRIu32 "", instruction->debug_id);
|
||||
if (irp->pass != IrPassSrc && irp->printed.maybe_get(instruction) == nullptr) {
|
||||
irp->printed.put(instruction, 0);
|
||||
irp->pending.append(instruction);
|
||||
|
|
Loading…
Reference in New Issue