[05/12] ipa-sra: Dump edge summaries also for non-candidates

Message ID ri6pmdtkkrk.fsf@suse.cz
State Accepted
Headers
Series [01/12] ipa: IPA-SRA split detection simplification |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Martin Jambor Nov. 12, 2022, 1:46 a.m. UTC
  Hi,

this should have been part of r12-578-g717d278af93a4a.  Call edge
summaries provide information required for IPA-SRA transformations in
the callees but are generated when analyzing callers and thus also
callers which are not IPA-SRA candidates themselves.  Therefore we
analyze them but don't dump them, which makes the dumops quite
incomplete. This patch fixes that.

Bootstrapped and tested on x86_64-linux.  OK for master?

Thanks,

Martin


gcc/ChangeLog:

2021-12-14  Martin Jambor  <mjambor@suse.cz>

	* ipa-sra.c (ipa_sra_dump_all_summaries): Dump edge summaries even
	for non-candidates.
---
 gcc/ipa-sra.cc | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
  

Comments

Jan Hubicka Nov. 16, 2022, 1:48 p.m. UTC | #1
> Hi,
> 
> this should have been part of r12-578-g717d278af93a4a.  Call edge
> summaries provide information required for IPA-SRA transformations in
> the callees but are generated when analyzing callers and thus also
> callers which are not IPA-SRA candidates themselves.  Therefore we
> analyze them but don't dump them, which makes the dumops quite
> incomplete. This patch fixes that.
> 
> Bootstrapped and tested on x86_64-linux.  OK for master?
> 
> Thanks,
> 
> Martin
> 
> 
> gcc/ChangeLog:
> 
> 2021-12-14  Martin Jambor  <mjambor@suse.cz>
> 
> 	* ipa-sra.c (ipa_sra_dump_all_summaries): Dump edge summaries even
> 	for non-candidates.
OK,
thanks!
Honza
  

Patch

diff --git a/gcc/ipa-sra.cc b/gcc/ipa-sra.cc
index 959e8829777..0f137e810fe 100644
--- a/gcc/ipa-sra.cc
+++ b/gcc/ipa-sra.cc
@@ -2806,13 +2806,10 @@  ipa_sra_dump_all_summaries (FILE *f)
       if (!ifs)
 	fprintf (f, "  Function does not have any associated IPA-SRA "
 		 "summary\n");
+      else if (!ifs->m_candidate)
+	fprintf (f, "  Not a candidate function\n");
       else
 	{
-	  if (!ifs->m_candidate)
-	    {
-	      fprintf (f, "  Not a candidate function\n");
-	      continue;
-	    }
 	  if (ifs->m_returns_value)
 	    fprintf (f, "  Returns value\n");
 	  if (vec_safe_is_empty (ifs->m_parameters))