diff mbox

Fix PR ipa/65557

Message ID 55192F13.8050002@suse.cz
State New
Headers show

Commit Message

Martin Liška March 30, 2015, 11:10 a.m. UTC
Hello.

Following patch fixed the issue, where we have to check if function summary
for IPA CP has been already created.

Tested on x86_64-linux-pc w/o any new regression introduced.
Ready for trunk?
	
Thanks,
Martin

Comments

Jan Hubicka March 30, 2015, 5:03 p.m. UTC | #1
> Hello.
> 
> Following patch fixed the issue, where we have to check if function summary
> for IPA CP has been already created.
> 
> Tested on x86_64-linux-pc w/o any new regression introduced.
> Ready for trunk?
> 	
> Thanks,
> Martin

> >From c33680093e67328863836a845e847bf1b1b23d0e Mon Sep 17 00:00:00 2001
> From: mliska <mliska@suse.cz>
> Date: Sun, 29 Mar 2015 20:20:33 +0200
> Subject: [PATCH] Fix PR65557.
> 
> gcc/ChangeLog:
> 
> 2015-03-29  Martin Liska  <mliska@suse.cz>
> 
> 	PR ipa/65557
> 	* ipa-icf.c (sem_function::equals_wpa): Check if IPA CP
> 	has already filled up function summary.

OK, there is one extra occurence of flag_ipa_cp test, so please update it consistently.

Honza
diff mbox

Patch

From c33680093e67328863836a845e847bf1b1b23d0e Mon Sep 17 00:00:00 2001
From: mliska <mliska@suse.cz>
Date: Sun, 29 Mar 2015 20:20:33 +0200
Subject: [PATCH] Fix PR65557.

gcc/ChangeLog:

2015-03-29  Martin Liska  <mliska@suse.cz>

	PR ipa/65557
	* ipa-icf.c (sem_function::equals_wpa): Check if IPA CP
	has already filled up function summary.

gcc/testsuite/ChangeLog:

2015-03-29  Martin Liska <mliska@suse.cz>

	* g++.dg/ipa/pr65557.C: New test.
---
 gcc/ipa-icf.c                      |  2 +-
 gcc/testsuite/g++.dg/ipa/pr65557.C | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/g++.dg/ipa/pr65557.C

diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index ad868e1..ee7dabe 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -534,7 +534,7 @@  sem_function::equals_wpa (sem_item *item,
   if (opt_for_fn (decl, flag_devirtualize)
       && (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE
           || TREE_CODE (TREE_TYPE (item->decl)) == METHOD_TYPE)
-      && (!flag_ipa_cp
+      && (ipa_node_params_sum == NULL
 	  || ipa_is_param_used (IPA_NODE_REF (dyn_cast <cgraph_node *>(node)),
 				0))
       && compare_polymorphic_p ())
diff --git a/gcc/testsuite/g++.dg/ipa/pr65557.C b/gcc/testsuite/g++.dg/ipa/pr65557.C
new file mode 100644
index 0000000..2250bb0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr65557.C
@@ -0,0 +1,19 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-icf-details"  } */
+
+struct S0
+{
+  S0 ()
+  {
+  }
+};
+
+struct S1
+{
+  S1 ()
+  {
+  }
+};
+
+S0 s0;
+S1 s1;
-- 
2.1.4