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

--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
The key point is that several elements of cfun->eh->lp_array can share the same
landing pad:

(gdb) p *cfun->eh->lp_array->m_vecdata[1]
$11 = {next_lp = 0x0, region = 0x7ffff695c898, 
  post_landing_pad = 0x7ffff695df80, landing_pad = 0x7ffff6a6b200, index = 1}

(gdb) p *cfun->eh->lp_array->m_vecdata[2]
$12 = {next_lp = 0x0, region = 0x7ffff695c8f0, 
  post_landing_pad = 0x7ffff695de80, landing_pad = 0x7ffff6a6b200, index = 2}

(gdb) p *cfun->eh->lp_array->m_vecdata[1]->region
$13 = {outer = 0x0, inner = 0x0, next_peer = 0x0, index = 1, type = ERT_TRY, 
  u = {eh_try = {first_catch = 0x7ffff6964398, last_catch = 0x7ffff6964398}, 
    allowed = {type_list = 0x7ffff6964398, label = 0x7ffff6964398, 
      filter = 0}, must_not_throw = {failure_decl = 0x7ffff6964398, 
      failure_loc = 4137042840}}, landing_pads = 0x7ffff69648c0, 
  exc_ptr_reg = 0x7ffff6a6a2a0, filter_reg = 0x7ffff6a6a150, 
  use_cxa_end_cleanup = false}

(gdb) p *cfun->eh->lp_array->m_vecdata[2]->region
$14 = {outer = 0x0, inner = 0x0, next_peer = 0x7ffff695c898, index = 2, 
  type = ERT_CLEANUP, u = {eh_try = {first_catch = 0x0, last_catch = 0x0}, 
    allowed = {type_list = 0x0, label = 0x0, filter = 0}, must_not_throw = {
      failure_decl = 0x0, failure_loc = 0}}, landing_pads = 0x7ffff69643c0, 
  exc_ptr_reg = 0x7ffff6a6a8e8, filter_reg = 0x0, use_cxa_end_cleanup = false}

Reply via email to