This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/79432] [7 Regression] ICE: verify_ssa failed


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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
We gimplify this to

fn2 ()
{
  int a;

  _1 = fn1 ();
  _2 = vfork ();
  a = _1 + _2;
}

and at CFG construction time try to "fixup" via

fn2 ()
{
  int D.1803;
  int D.1802;
  int a;

  <bb 2> [0.00%]:
  D.1802 = fn1 ();

  <bb 3> [0.00%]:
  _1 = D.1802;

  <bb 4> [0.00%]:
  D.1803 = vfork ();
  goto <bb 6>; [0.00%]

  <bb 5> [0.00%]:
  ABNORMAL_DISPATCHER (0);

  <bb 6> [0.00%]:
  _2 = D.1803;
  a = _1 + _2;
  return;

}

this deals with the abnormal outgoing edges but not the abnormal incoming
edges.  That is, we do not replace _1 with D.1802 everywhere but just
adjust it across the call/result set split.  Note that before into-SSA
we do not have SSA operands set up and thus can't easily walk immediate
uses of _1.

I believe the issue does not only exist for LHS of stmts that can do abnormal
control flow but any SSA defs that have uses live across such calls.  So
a more sustainable fix than

r146168 | rguenth | 2009-04-16 12:45:18 +0200 (Thu, 16 Apr 2009) | 6 lines

2009-04-16  Richard Guenther  <rguenther@suse.de>

        PR middle-end/39625
        * tree-cfg.c (make_blocks): Split statements with to-be
        abnormal SSA names on the lhs.

might be to deal with the situation in into-SSA...

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]