Richard,

OK, all that I've gotten so far out of the dump file is
that the name of "_920" is just something sccvn concocted
and wasn't something I accidentally caused.

That still leaves me with the question of what is going on.

Here's all the interesting bits of the dumpfile concerning
dedangled_864:

:
dedangled_865 = *bea_43 + 64
dedangled_863 = *bea_43 + 128
dedangled_864 = *bea_43 + 64
dedangled_866 = *bea_43 + 128
dedangled_867 = dedangled_863
dedangled_867 = dedangled_865
dedangled_868 = dedangled_864
dedangled_868 = dedangled_866
:
Equivalence classes for indirect node id 160 "dedangled_865": pointer 84, 
location 0
Equivalence classes for indirect node id 161 "dedangled_863": pointer 85, 
location 0
Equivalence classes for indirect node id 162 "dedangled_864": pointer 86, 
location 0
:
dedangled_865 = { ESCAPED NONLOCAL }
dedangled_863 = { ESCAPED NONLOCAL }
dedangled_864 = { ESCAPED NONLOCAL }
dedangled_866 = { ESCAPED NONLOCAL }
dedangled_867 = { ESCAPED NONLOCAL }
dedangled_868 = { ESCAPED NONLOCAL }
:
Value numbering store MEM[(int64_t *)&net + 608B] to _59
Setting value number of .MEM_123 to .MEM_123 (changed)
Value numbering stmt = dedangled_865 = bea_43->tail;
Setting value number of dedangled_865 to dedangled_865 (changed)
Making available beyond BB36 dedangled_865 for value dedangled_865
Value numbering stmt = dedangled_863 = bea_43->head;
Setting value number of dedangled_863 to dedangled_863 (changed)
Making available beyond BB36 dedangled_863 for value dedangled_863
Value numbering stmt = dedangled_864 = bea_43->tail;
Inserting name _920 for expression (struct node.reorg.reorder *) dedangled_865
Setting value number of dedangled_864 to _920 (changed)
Making available beyond BB36 dedangled_864 for value _920
Value numbering stmt = dedangled_866 = bea_43->head;
:
Value numbering stmt = dedangled_868 = PHI <dedangled_864(166), 
dedangled_866(37)>
Setting value number of dedangled_868 to dedangled_868 (changed)
:
Setting value number of dedangled_363 to _920 (changed)
dedangled_864 is available for _920
Value numbering stmt = _896 = dedangled_363 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _881 = dedangled_363 == dedangled_875;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _880 = _881 & _891;
dedangled_864 is available for _920
dedangled_864 is available for _920
dedangled_864 is available for _920
dedangled_864 is available for _920
:
Setting value number of dedangled_313 to _920 (changed)
dedangled_864 is available for _920
Value numbering stmt = _904 = dedangled_313 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _442 = _11 & _904;
dedangled_864 is available for _920
Match-and-simplified _11 & _904 to _904
:
Value numbering stmt = if (_442 != 0)
dedangled_864 is available for _920
:
Making available beyond BB36 dedangled_863 for value dedangled_863
Value numbering stmt = dedangled_864 = bea_43->tail;
Setting value number of dedangled_864 to _920
Making available beyond BB36 dedangled_864 for value _920
Value numbering stmt = dedangled_866 = bea_43->head;
:
Making available beyond BB38 dedangled_867 for value dedangled_867
Value numbering stmt = dedangled_868 = PHI <dedangled_864(166), 
dedangled_866(37)>
Setting value number of dedangled_868 to dedangled_868
:
Setting value number of dedangled_363 to _920
dedangled_864 is available for _920
Value numbering stmt = _896 = dedangled_363 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _881 = dedangled_363 == dedangled_875;
dedangled_864 is available for _920
(the last line repeats many times)
:
(a bunch more of the "dedangled_864 is available for _920")
:
exp_gen[36] := { red_cost_of_bea_42 (0019), bea_43 (0020), 
{mem_ref<608B>,addr_expr<&net>}@.MEM_99 (0027), {plus_expr,_58,1} (0028), 
{component_ref<tail>,mem_ref<0B>,bea_43}@.MEM_387 (0408), 
{component_ref<head>,mem_ref<0B>,bea_43}@.MEM_387 (0407) }
phi_gen[36] := {  }
tmp_gen[36] := { _58 (0027), _59 (0028), dedangled_865 (0408), dedangled_863 
(0407), dedangled_864 (0448), dedangled_866 (0229) }
avail_out[36] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229) }
exp_gen[37] := {  }
phi_gen[37] := {  }
tmp_gen[37] := {  }
avail_out[37] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229) }
exp_gen[38] := { dedangled_867 (0409), dedangled_868 (0410) }
phi_gen[38] := { dedangled_867 (0409), dedangled_868 (0410) }
tmp_gen[38] := {  }
avail_out[38] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229), dedangled_867 (0409), dedangled_868 (0410) }
(a presence in the avail_out for rest until it reaches a point where is in none 
of them)
:
ANTIC_OUT[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), bea_43 
(0020), dedangled_863 (0407), dedangled_864 (0448) }
[changed] ANTIC_IN[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), 
bea_43 (0020), dedangled_863 (0407), dedangled_864 (0448) }
S[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), bea_43 (0020), 
dedangled_863 (0407), dedangled_864 (0448) }
:
PA_OUT[36] := { stop_arcs_2 (0004), _4 (0006), 
{mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), xchange_900 (0431), 
{mem_ref<0B>,addr_expr<&opt_basket>}@.MEM_104(D) (0015), 
{mem_ref<0B>,addr_expr<&full_group_end_arc>}@.MEM_104(D) (0083), end_arc_445 
(0228), {mem_ref<0B>,addr_expr<&perm_p>}@.MEM_104(D) (0016), red_cost_of_bea_42 
(0019), bea_43 (0020), dedangled_865 (0408), dedangled_863 (0407), 
dedangled_864 (0448), dedangled_866 (0229), 
{mem_ref<616B>,addr_expr<&net>}@.MEM_99 (0442), {plus_expr,_913,1} (0438), 
{component_ref<orientation>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0258), 
{component_ref<flow>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0274), 
{component_ref<pred>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0265), 
{component_ref<depth>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0049), 
{component_ref<basic_arc>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0299), {component_ref<feas_tol>,mem_ref<0B>,addr_expr<&net>}@.MEM_387 (0222), 
{abs_expr,red_cost_of_bea_42} (0134), 
{component_ref<potential>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0306), 
{component_ref<child>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0312), 
{component_ref<sibling>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0327), 
{component_ref<sibling_prev>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0339), {pointer_plus_expr,field_arry_addr_581,-8} (0921), 
{bit_xor_expr,xchange_900,1} (0923), {pointer_plus_expr,field_arry_addr_591,-8} 
(0924), {pointer_plus_expr,field_arry_addr_601,-8} (0926) }
:
Replaced bea_43->tail with _975 in dedangled_864 = bea_43->tail;
:
  long int pretmp_859;
  struct node * * field_addr_860;
  struct node * field_val_temp_861;
  unsigned long dedangled_863;
  unsigned long dedangled_864;
  unsigned long dedangled_865;
  unsigned long dedangled_866;
  :
    <bb 36> [local count: 4422246]:
  _58 = MEM[(int64_t *)&net + 608B];
  _59 = _58 + 1;
  MEM[(int64_t *)&net + 608B] = _59;
  dedangled_865 = bea_43->tail;
  dedangled_863 = bea_43->head;
  _975 = (struct node.reorg.reorder *) dedangled_865;
  dedangled_864 = bea_43->tail;
  dedangled_866 = bea_43->head;
  if (red_cost_of_bea_42 > 0)
    goto <bb 166>; [59.00%]
  else
    goto <bb 37>; [41.00%]

  <bb 166> [local count: 2609125]:
  goto <bb 38>; [100.00%]

  <bb 37> [local count: 1813121]:

  <bb 38> [local count: 4422246]:
  # dedangled_867 = PHI <dedangled_863(166), dedangled_865(37)>
  # dedangled_868 = PHI <dedangled_864(166), dedangled_866(37)>
  if (dedangled_867 != dedangled_868)
    goto <bb 126>; [89.00%]
  else
    goto <bb 55>; [11.00%]
=================================================
I was pretty arbitrary here about what I extracted from the
dump file but it's 33MB in size.

I'm still thinking it's something dumb that I did
when I created "dedangled_864" but I can't spot it from
the dump. Does anyone have any ideas? Note, before I
looked at the dump I at least had a half-baked idea
of what to try but now this leaves me without a clue
as to what to do (I'm going to read up on the original
algorithm.)

Thanks,

GaryRichard,

OK, all that I've gotten so far out of the dump file is
that the name of "_920" is just something sccvn concocted
and wasn't something I accidentaly caused.

That still leaves me with the question of what is going on.

Here's all the interesting bits of the dumpfile concerning
dedangled_864:

:
dedangled_865 = *bea_43 + 64
dedangled_863 = *bea_43 + 128
dedangled_864 = *bea_43 + 64
dedangled_866 = *bea_43 + 128
dedangled_867 = dedangled_863
dedangled_867 = dedangled_865
dedangled_868 = dedangled_864
dedangled_868 = dedangled_866
:
Equivalence classes for indirect node id 160 "dedangled_865": pointer 84, 
location 0
Equivalence classes for indirect node id 161 "dedangled_863": pointer 85, 
location 0
Equivalence classes for indirect node id 162 "dedangled_864": pointer 86, 
location 0
:
dedangled_865 = { ESCAPED NONLOCAL }
dedangled_863 = { ESCAPED NONLOCAL }
dedangled_864 = { ESCAPED NONLOCAL }
dedangled_866 = { ESCAPED NONLOCAL }
dedangled_867 = { ESCAPED NONLOCAL }
dedangled_868 = { ESCAPED NONLOCAL }
:
Value numbering store MEM[(int64_t *)&net + 608B] to _59
Setting value number of .MEM_123 to .MEM_123 (changed)
Value numbering stmt = dedangled_865 = bea_43->tail;
Setting value number of dedangled_865 to dedangled_865 (changed)
Making available beyond BB36 dedangled_865 for value dedangled_865
Value numbering stmt = dedangled_863 = bea_43->head;
Setting value number of dedangled_863 to dedangled_863 (changed)
Making available beyond BB36 dedangled_863 for value dedangled_863
Value numbering stmt = dedangled_864 = bea_43->tail;
Inserting name _920 for expression (struct node.reorg.reorder *) dedangled_865
Setting value number of dedangled_864 to _920 (changed)
Making available beyond BB36 dedangled_864 for value _920
Value numbering stmt = dedangled_866 = bea_43->head;
:
Value numbering stmt = dedangled_868 = PHI <dedangled_864(166), 
dedangled_866(37)>
Setting value number of dedangled_868 to dedangled_868 (changed)
:
Setting value number of dedangled_363 to _920 (changed)
dedangled_864 is available for _920
Value numbering stmt = _896 = dedangled_363 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _881 = dedangled_363 == dedangled_875;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _880 = _881 & _891;
dedangled_864 is available for _920
dedangled_864 is available for _920
dedangled_864 is available for _920
dedangled_864 is available for _920
:
Setting value number of dedangled_313 to _920 (changed)
dedangled_864 is available for _920
Value numbering stmt = _904 = dedangled_313 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _442 = _11 & _904;
dedangled_864 is available for _920
Match-and-simplified _11 & _904 to _904
:
Value numbering stmt = if (_442 != 0)
dedangled_864 is available for _920
:
Making available beyond BB36 dedangled_863 for value dedangled_863
Value numbering stmt = dedangled_864 = bea_43->tail;
Setting value number of dedangled_864 to _920
Making available beyond BB36 dedangled_864 for value _920
Value numbering stmt = dedangled_866 = bea_43->head;
:
Making available beyond BB38 dedangled_867 for value dedangled_867
Value numbering stmt = dedangled_868 = PHI <dedangled_864(166), 
dedangled_866(37)>
Setting value number of dedangled_868 to dedangled_868
:
Setting value number of dedangled_363 to _920
dedangled_864 is available for _920
Value numbering stmt = _896 = dedangled_363 == dedangled_873;
dedangled_864 is available for _920
(the last line repeats many times)
:
Value numbering stmt = _881 = dedangled_363 == dedangled_875;
dedangled_864 is available for _920
(the last line repeats many times)
:
(a bunch more of the "dedangled_864 is available for _920")
:
exp_gen[36] := { red_cost_of_bea_42 (0019), bea_43 (0020), 
{mem_ref<608B>,addr_expr<&net>}@.MEM_99 (0027), {plus_expr,_58,1} (0028), 
{component_ref<tail>,mem_ref<0B>,bea_43}@.MEM_387 (0408), 
{component_ref<head>,mem_ref<0B>,bea_43}@.MEM_387 (0407) }
phi_gen[36] := {  }
tmp_gen[36] := { _58 (0027), _59 (0028), dedangled_865 (0408), dedangled_863 
(0407), dedangled_864 (0448), dedangled_866 (0229) }
avail_out[36] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229) }
exp_gen[37] := {  }
phi_gen[37] := {  }
tmp_gen[37] := {  }
avail_out[37] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229) }
exp_gen[38] := { dedangled_867 (0409), dedangled_868 (0410) }
phi_gen[38] := { dedangled_867 (0409), dedangled_868 (0410) }
tmp_gen[38] := {  }
avail_out[38] := { xchange_449(D) (0232), arcs_1 (0003), stop_arcs_2 (0004), _4 
(0006), _5 (0007), i_646 (0340), _7 (0008), _8 (0009), _9 (0010), i_10 (0011), 
_212 (0112), xchange_900 (0431), end_arc_385 (0180), _14 (0013), _19 (0015), 
field_arry_addr_112 (0045), i_665 (0352), next_666 (0353), _163 (0081), 
next_218 (0113), _173 (0083), _178 (0086), _179 (0087), _176 (0084), 
end_arc_443 (0226), end_arc_444 (0227), end_arc_445 (0228), _222 (0238), _223 
(0115), _224 (0116), _225 (0117), _226 (0118), _227 (0119), _228 (0120), _229 
(0121), _231 (0123), _21 (0016), red_cost_of_bea_42 (0019), bea_43 (0020), 
i_649 (0343), _45 (0021), _46 (0022), _47 (0023), _58 (0027), _59 (0028), 
dedangled_865 (0408), dedangled_863 (0407), dedangled_864 (0448), dedangled_866 
(0229), dedangled_867 (0409), dedangled_868 (0410) }
(a presence in the avail_out for rest until it reaches a point where is in none 
of them)
:
ANTIC_OUT[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), bea_43 
(0020), dedangled_863 (0407), dedangled_864 (0448) }
[changed] ANTIC_IN[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), 
bea_43 (0020), dedangled_863 (0407), dedangled_864 (0448) }
S[166] := { {mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), bea_43 (0020), 
dedangled_863 (0407), dedangled_864 (0448) }
:
PA_OUT[36] := { stop_arcs_2 (0004), _4 (0006), 
{mem_ref<0B>,addr_expr<&opt>}@.MEM_104(D) (0112), xchange_900 (0431), 
{mem_ref<0B>,addr_expr<&opt_basket>}@.MEM_104(D) (0015), 
{mem_ref<0B>,addr_expr<&full_group_end_arc>}@.MEM_104(D) (0083), end_arc_445 
(0228), {mem_ref<0B>,addr_expr<&perm_p>}@.MEM_104(D) (0016), red_cost_of_bea_42 
(0019), bea_43 (0020), dedangled_865 (0408), dedangled_863 (0407), 
dedangled_864 (0448), dedangled_866 (0229), 
{mem_ref<616B>,addr_expr<&net>}@.MEM_99 (0442), {plus_expr,_913,1} (0438), 
{component_ref<orientation>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0258), 
{component_ref<flow>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0274), 
{component_ref<pred>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0265), 
{component_ref<depth>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0049), 
{component_ref<basic_arc>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0299), {component_ref<feas_tol>,mem_ref<0B>,addr_expr<&net>}@.MEM_387 (0222), 
{abs_expr,red_cost_of_bea_42} (0134), 
{component_ref<potential>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0306), 
{component_ref<child>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0312), 
{component_ref<sibling>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0327), 
{component_ref<sibling_prev>,mem_ref<0B>,addr_expr<&_reorg_base_var_node.reorg.reorder>}@.MEM_387
 (0339), {pointer_plus_expr,field_arry_addr_581,-8} (0921), 
{bit_xor_expr,xchange_900,1} (0923), {pointer_plus_expr,field_arry_addr_591,-8} 
(0924), {pointer_plus_expr,field_arry_addr_601,-8} (0926) }
:
Replaced bea_43->tail with _975 in dedangled_864 = bea_43->tail;
:
  long int pretmp_859;
  struct node * * field_addr_860;
  struct node * field_val_temp_861;
  unsigned long dedangled_863;
  unsigned long dedangled_864;
  unsigned long dedangled_865;
  unsigned long dedangled_866;
  :
    <bb 36> [local count: 4422246]:
  _58 = MEM[(int64_t *)&net + 608B];
  _59 = _58 + 1;
  MEM[(int64_t *)&net + 608B] = _59;
  dedangled_865 = bea_43->tail;
  dedangled_863 = bea_43->head;
  _975 = (struct node.reorg.reorder *) dedangled_865;
  dedangled_864 = bea_43->tail;
  dedangled_866 = bea_43->head;
  if (red_cost_of_bea_42 > 0)
    goto <bb 166>; [59.00%]
  else
    goto <bb 37>; [41.00%]

  <bb 166> [local count: 2609125]:
  goto <bb 38>; [100.00%]

  <bb 37> [local count: 1813121]:

  <bb 38> [local count: 4422246]:
  # dedangled_867 = PHI <dedangled_863(166), dedangled_865(37)>
  # dedangled_868 = PHI <dedangled_864(166), dedangled_866(37)>
  if (dedangled_867 != dedangled_868)
    goto <bb 126>; [89.00%]
  else
    goto <bb 55>; [11.00%]
=================================================
I was pretty arbitrary here about what I extracted from the
dump file but it's 33MB in size.

I'm still thinking it's something dumb that I did
when I created "dedangled_864" but I can't spot it from
the dump. Does anyone have any ideas? Note, before I
looked at the dump I at least had a half-baked idea
of what to try but now this leaves me without a clue
as to what to do (I'm going to read up on the original
algorithm.)

Thanks,

Gary

________________________________
From: Richard Biener <richard.guent...@gmail.com>
Sent: Thursday, July 22, 2021 5:18 AM
To: Gary Oblock <g...@amperecomputing.com>
Cc: gcc@gcc.gnu.org <gcc@gcc.gnu.org>
Subject: Re: A value number issue

[EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please 
be mindful of safe email handling and proprietary information protection 
practices.]


On Thu, Jul 22, 2021 at 8:06 AM Gary Oblock via Gcc <gcc@gcc.gnu.org> wrote:
>
> I seem to be having a problem with the pre pass.
>
> When eliminate_dom_walker::eliminate_stmt is called with
> the gsi to "dedangled_864 = bea_43->tail;" which in turn
> calls eliminate_dom_walker::eliminate_avail op of dedangled_864.
> This gives VN_INFO (lhs)->valnum of _920. The _920 is not
> associated with any SSA variable in the function and I don't
> see how it got associated with dedangled_864. This is not
> a theoretical issue because it causes an error (the gcc_unreachable
> in eliminate_stmt is called.)

But you show below the definition of _920 so I don't quite understand
your question.  You can follow VNs reasoning in the -details dump.

>
> Here is how _920 (in function main) is used.
>
>   _920 = arcnew_916->head;
>   _921 = MEM[(struct node.reorg.reorder *)_920].firstin;
>   MEM[(struct node.reorg.reorder *)_920].firstin = arcnew_916;
>
> Here is how dedangled_864 is used:
>
>   <bb 63> [local count: 2609125]:
>   dedangled_863 = bea_43->head;
>   dedangled_864 = bea_43->tail;
>   goto <bb 65>; [100.00%]
>
>   <bb 64> [local count: 1813121]:
>   dedangled_865 = bea_43->tail;
>   dedangled_866 = bea_43->head;
>
>   <bb 65> [local count: 4422246]:
>   # dedangled_867 = PHI <dedangled_863(63), dedangled_865(64)>
>   # dedangled_868 = PHI <dedangled_864(63), dedangled_866(64)>
>   delta_461 = 1;
>   goto <bb 82>; [100.00%]
>
> Note, dedangled_868 is used in an ever widening net of
> phis and operations. Also, the other similar statements
>
>   dedangled_863 = bea_43->head;
>   dedangled_865 = bea_43->tail;
>   dedangled_866 = bea_43->head;
>
> don't seem to be malformed.
>
> I tried using a watchpoint to see what was happening but that turned
> out to be not productive in that it was tripping on something
> unrelated even if I set it at the start of the pre pass.
>
> I'm assuming that some of my code is malformed in some
> subtle way and I was wondering it anybody had any ideas?
> I say subtle because this was all working on a slightly different
> version of gcc without the code of some other Ampere optimizations
> in the mix (I disabled those optimizations and things still failed.)
>
> Note, if you guys don't have any ideas the next approach is adding
> tons of brute force instrumentation and special purpose sanity
> checking to the value numbering routine... please help me avoid that.
>
> Thanks,
>
> Gary
>
>
> CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is 
> for the sole use of the intended recipient(s) and contains information that 
> is confidential and proprietary to Ampere Computing or its subsidiaries. It 
> is to be used solely for the purpose of furthering the parties' business 
> relationship. Any unauthorized review, copying, or distribution of this email 
> (or any attachments thereto) is strictly prohibited. If you are not the 
> intended recipient, please contact the sender immediately and permanently 
> delete the original and any copies of this email and any attachments thereto.

Reply via email to