https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110313

--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Correction with regards to reg_info_size:

I claimed that reg_info_size = 3659 > 3483 – but that's not quite true.

That's the result when doing 'p reg_info_size' in lra-constraints.cc.
When going 'up' in the debugger to lra.cc, the value is there:

  reg_info_size == 2723

It is not completely clear which 'reg_info_size' gdb picks up in
lra-constraints.cc as there are:

lra.cc:static int reg_info_size;
reginfo.cc:static int reg_info_size;

and none in lra-constraints.cc.

* * *

In any case, the lra.c's reg_info_size is increased via
* lra.c's init_reg_info + expand_reg_info;
  the latter is also called via expand_reg_data
  and add_regs_to_insn_regno_info. And indirectly via lra_emit_move,
  lra_create_new_reg_with_unique_value and lra_emit_add.

  The last 3 are non-static and also called in lra-constraints.cc

* reginfo.cc's allocate_reg_info is set in allocate_reg_info,
  reginfo_init and resize_reg_info - and the last one is non-static
  and called via:
  lra_get_regno_hard_regno and lra_get_allocno_class 
  and togather with the lra.c's one in via the lra_emit_* and
  lra_create_*

It seems as if some of the lra-constraints.cc calls that call
lra_get_allocno_class or lra_get_regno_hard_regno - also need to
call something which increases the size of lra.c's reg_info_size
and the associated lra_reg_info array.

Reply via email to