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

            Bug ID: 63560
           Summary: __go_set_defer_retaddr shouldn't be split by IPA split
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: mliska at suse dot cz
                CC: cmang at google dot com, hubicka at ucw dot cz, iant at 
google dot com,
                    mliska at suse dot cz

Starting from r216305, IPA ICF can unify functions that will change decision
made by IPA inline. As a result, we end up with split function:


Not working version:
bytes_test.$thunk0 (struct
{
  struct __go_descriptor * fn;
} * __go_thunk_parameter)
{
  bool _3;

  <bb 2>:
  # DEBUG $ret49 => 0
  _3 = __go_set_defer_retaddr (&retaddr);
  if (_3 != 0)
    goto <bb 4> (retaddr);
  else
    goto <bb 3>;

  <bb 3>:
  bytes_test.$thunk0.part.15 (__go_thunk_parameter_4(D));

retaddr:
  # DEBUG $ret49 => 0
  return 0;

}

I discussed this stuff with Ian and Honza and the agreement is that we should
not split functions decorated with noinline attribute. Honza will come up with
a patch.

Thank you,
Martin

Reply via email to