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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org
           Assignee|marxin at gcc dot gnu.org          |unassigned at gcc dot 
gnu.org

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
The mentioned patch is responsible for preserving of ifunc resolver:

Bisecting latest revisions
  0e35450b3c1d7164(30 Jun 2017 13:51): [took: 2.646s] result: OK

;; Function xd (xd.default.3, funcdef_no=0, decl_uid=1815, cgraph_uid=0,
symbol_order=0)

__attribute__((target ("default"), target_clones ("avx", "default")))
xd ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}



;; Function tx (tx.default.2, funcdef_no=1, decl_uid=1818, cgraph_uid=1,
symbol_order=1)

__attribute__((target ("default"), target_clones ("avx", "default")))
tx ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}



;; Function tx.avx.0 (tx.avx.0, funcdef_no=3, decl_uid=1832, cgraph_uid=3,
symbol_order=3)

__attribute__((target ("avx"), target_clones ("avx", "default")))
tx.avx.0 ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}



;; Function xd.avx.1 (xd.avx.1, funcdef_no=4, decl_uid=2147, cgraph_uid=4,
symbol_order=4)

__attribute__((target ("avx"), target_clones ("avx", "default")))
xd.avx.1 ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}



;; Function main (main, funcdef_no=2, decl_uid=1821, cgraph_uid=2,
symbol_order=2) (executed once)

main ()
{
  <bb 2> [100.00%] [count: INV]:
  return 0;

}



;; Function tx.resolver (tx.resolver, funcdef_no=6, decl_uid=2151,
cgraph_uid=6, symbol_order=6)

tx.resolver ()
{
  int _3;

  <bb 2> [100.00%] [count: INV]:
  __builtin_cpu_init ();
  _3 = __builtin_cpu_supports (&"avx"[0]);
  if (_3 > 0)
    goto <bb 3>; [64.00%] [count: INV]
  else
    goto <bb 4>; [36.00%] [count: INV]

  <bb 3> [64.00%] [count: INV]:
  return tx.avx.0;

  <bb 4> [36.00%] [count: INV]:
  return tx;

}



;; Function xd.resolver (xd.resolver, funcdef_no=8, decl_uid=2157,
cgraph_uid=10, symbol_order=10)

xd.resolver ()
{
  int _3;

  <bb 2> [100.00%] [count: INV]:
  __builtin_cpu_init ();
  _3 = __builtin_cpu_supports (&"avx"[0]);
  if (_3 > 0)
    goto <bb 3>; [64.00%] [count: INV]
  else
    goto <bb 4>; [36.00%] [count: INV]

  <bb 3> [64.00%] [count: INV]:
  return xd.avx.1;

  <bb 4> [36.00%] [count: INV]:
  return xd;

}

while before it was removed:

  ac45aefc028a5546(30 Jun 2017 13:19): [took: 2.623s] result: OK

;; Function main (main, funcdef_no=2, decl_uid=1821, cgraph_uid=2,
symbol_order=2) (executed once)

main ()
{
  <bb 2> [100.00%] [count: INV]:
  return 0;

}



;; Function tx.avx.0 (tx.avx.0, funcdef_no=3, decl_uid=1832, cgraph_uid=3,
symbol_order=3)

__attribute__((target ("avx"), target_clones ("avx", "default")))
tx.avx.0 ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}



;; Function xd.avx.1 (xd.avx.1, funcdef_no=4, decl_uid=2147, cgraph_uid=4,
symbol_order=4)

__attribute__((target ("avx"), target_clones ("avx", "default")))
xd.avx.1 ()
{
  <bb 2> [100.00%] [count: INV]:
  return;

}

Thus I'm leaving that to Richi, it's probably IPA PTA issue.

Reply via email to