[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

--- Comment #4 from Martin Liška  ---
Created attachment 43071
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43071&action=edit
IPA CP dump file before the revision

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

--- Comment #5 from Martin Liška  ---
Created attachment 43072
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43072&action=edit
IPA CP dump file after the revision

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-09 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Martin Liška  changed:

   What|Removed |Added

 CC||jamborm at gcc dot gnu.org

--- Comment #6 from Martin Liška  ---
Difference is that a new specialized clone is created with the revision:

--- /tmp/before/devirt-22.C.075i.cp 2018-01-09 13:30:36.973652893 +0100
+++ /tmp/after/devirt-22.C.075i.cp  2018-01-09 13:30:07.333100054 +0100
@@ -114,12 +114,12 @@
   Node: void lookupSourceDone()/8:
   Node: void sort(C&, C&)/7:
 param [0]: VARIABLE
- ctxs: Outer type:struct C offset 0 [loc_time: 0, loc_size: 0,
prop_time: 0, prop_size: 0]
+ ctxs: Outer type:struct C offset 0 [loc_time: 0, loc_size: 0,
prop_time: 32, prop_size: 13]
  Bits: value = 0x0, mask = 0xfff8
  ~[0, 0]
 ref offset 0: &MEM[(void *)&_ZTV1C + 16B] [loc_time: 0, loc_size: 0,
prop_time: 0, prop_size: 0]
-param [1]: &b [loc_time: 0, loc_size: 0, prop_time: 0, prop_size: 0]
- ctxs: Outer type:struct C offset 0 [loc_time: 0, loc_size: 0,
prop_time: 0, prop_size: 0]
+param [1]: &b [loc_time: 0, loc_size: 0, prop_time: 70, prop_size: 32]
+ ctxs: Outer type:struct C offset 0 [loc_time: 0, loc_size: 0,
prop_time: 64, prop_size: 26]
  Bits: value = 0x0, mask = 0xfff8
  ~[0, 0]
 AGGS VARIABLE
@@ -156,6 +156,10 @@
 replacing param #1 p1 with const 0
 ipa-prop: Discovered a virtual call to a known target (operator[].constprop/21
-> virtual int C::m_fn1()/0), for stmt OBJ_TYPE_REF(_2;this_4(D)->0)
(this_4(D));
 Speculative call turned into direct call.
+  Creating a specialized node of A& C::operator[](int)/1.
+replacing param #1 p1 with const 0
+ipa-prop: Discovered a virtual call to a known target (operator[].constprop/22
-> virtual int C::m_fn1()/0), for stmt OBJ_TYPE_REF(_2;this_4(D)->0)
(this_4(D));
+Speculative call turned into direct call.
   Creating a specialized node of virtual int C::m_fn1()/0.
 replacing param #0 this with const &b
  - Creating a specialized node of virtual int C::m_fn1()/0 for all known
contexts.

Martin can you please take a look and adjust expected scan output?

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-10 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

--- Comment #7 from Martin Jambor  ---
We create an additional clone because the edge that brings the context
now satisfies maybe_hot_p and previously it didn't.  The reason is
that the caller (which is called sort) now has frequency
NODE_FREQUENCY_EXECUTED_ONCE whereas previously it was
NODE_FREQUENCY_UNLIKELY_EXECUTED.

sort in term is a static function called from an externally visible
update_sources with frequency NODE_FREQUENCY_NORMAL and looks like:

int *e;
void update_sources() {
  if (e) {
C f;
sort(f, b);
  }
}

I am not sure I understand why this should mean that sort is only
likely to be executed once but it does not seem to be any worse than
the previous value.  I'll prepare the patch adjusting the test.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-11 Thread law at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

--- Comment #8 from Jeffrey A. Law  ---
Author: law
Date: Thu Jan 11 15:56:07 2018
New Revision: 256542

URL: https://gcc.gnu.org/viewcvs?rev=256542&root=gcc&view=rev
Log:
PR ipa/83178
* g++.dg/ipa/devirt-22.C: Adjust scan-dump-times count.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ipa/devirt-22.C

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-11 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||law at redhat dot com
 Resolution|--- |FIXED

--- Comment #9 from Jeffrey A. Law  ---
Fixed by Martin's patch on the trunk.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2017-11-27 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |8.0

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2017-11-28 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Christophe Lyon  changed:

   What|Removed |Added

 Target|x86_64-*-*  |x86_64-*-* arm aarch64
 CC||clyon at gcc dot gnu.org

--- Comment #1 from Christophe Lyon  ---
Confirmed on arm and aarch64 as well.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2017-11-30 Thread seurer at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

seurer at gcc dot gnu.org changed:

   What|Removed |Added

 CC||seurer at gcc dot gnu.org

--- Comment #2 from seurer at gcc dot gnu.org ---
Also on powerpc64 both BE and LE.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2017-12-12 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Ramana Radhakrishnan  changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2017-12-12
 CC||ramana at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from Ramana Radhakrishnan  ---
Confirmed then.