aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2017-12-22 18:03:16 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2017-12-22 18:03:16 +0100
commita50e9b2f5d4be81e7da7cf55e6ade4c6c575de03 (patch)
tree24dc8c5619b99187259be97646cc81c8b04e937d /gcc
parentd7b24d5556b2dae71e1ed3c907d33db21cd2ce72 (diff)
downloadgcc-a50e9b2f5d4be81e7da7cf55e6ade4c6c575de03.zip
gcc-a50e9b2f5d4be81e7da7cf55e6ade4c6c575de03.tar.gz
gcc-a50e9b2f5d4be81e7da7cf55e6ade4c6c575de03.tar.bz2
[PR 82027] Also stream opt_info of former_clones
2017-12-22 Martin Jambor <mjambor@suse.cz> PR lto/82027 * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former clones. testsuite/ * g++.dg/lto/pr82027_0.C: New test. From-SVN: r255978
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lto-cgraph.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lto/pr82027_0.C73
4 files changed, 85 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0847188..fed24f7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-12-22 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/82027
+ * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
+ clones.
+
2017-12-22 Julia Koval <julia.koval@intel.com>
Sebastian Peryt <sebastian.peryt@intel.com>
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index a19f8a1..ed3df15 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -1958,7 +1958,7 @@ input_offload_tables (bool do_force_output)
static int
output_cgraph_opt_summary_p (struct cgraph_node *node)
{
- return (node->clone_of
+ return ((node->clone_of || node->former_clone_of)
&& (node->clone.tree_map
|| node->clone.args_to_skip
|| node->clone.combined_args_to_skip));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fb9c339..209d4fc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-22 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/82027
+ * g++.dg/lto/pr82027_0.C: New test.
+
2017-12-22 Julia Koval <julia.koval@intel.com>
Sebastian Peryt <sebastian.peryt@intel.com>
diff --git a/gcc/testsuite/g++.dg/lto/pr82027_0.C b/gcc/testsuite/g++.dg/lto/pr82027_0.C
new file mode 100644
index 0000000..70cc776
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr82027_0.C
@@ -0,0 +1,73 @@
+// { dg-lto-do run }
+// { dg-lto-options { { -O3 -flto } } }
+
+class Position
+{
+ public:
+ Position( void ) {}
+ virtual ~Position() {}
+
+ virtual void calcPercent( const char *name,int pos,int size ) {}
+};
+
+
+class Looper
+{
+ public:
+ Looper( Position *cc,int size )
+ : m_cc(cc), m_size(size) {}
+ virtual ~Looper() {}
+
+ void loop( void )
+ {
+ for( int pos=0; pos<m_size; pos++ )
+ {
+ m_cc->calcPercent( "",pos,m_size );
+ }
+ }
+
+ private:
+ Position *m_cc;
+ int m_size;
+};
+
+
+class EmptyClass
+{
+ public:
+ EmptyClass( void ) {}
+ virtual ~EmptyClass() {}
+};
+
+
+class Combined : public EmptyClass, public Position
+{
+ public:
+ Combined( void ) : m_percent(0) {}
+ ~Combined() {}
+
+ void calcPercent( const char *name,int pos,int size )
+ {
+ int percent = 100*pos/size;
+ if( percent!=m_percent )
+ m_percent = percent;
+ }
+
+ private:
+ int m_percent;
+};
+
+
+
+int main( int argc,char **argv )
+{
+ Combined *comb = new Combined();
+ Looper *looper = new Looper( comb,argc );
+
+ looper->loop();
+
+ delete comb;
+ delete looper;
+
+ return( 0 );
+}