This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Implement -fopt-info support for IPA ICF.
- From: Martin Liška <mliska at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 8 Aug 2019 15:04:05 +0200
- Subject: [PATCH] Implement -fopt-info support for IPA ICF.
Hi.
As requested by Richi, I'm suggesting to use new dump_printf
optimization info infrastructure.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
Ready to be installed?
Thanks,
Martin
gcc/ChangeLog:
2019-08-08 Martin Liska <mliska@suse.cz>
* ipa-icf.c (sem_function::merge): Define AUTO_DUMP_SCOPE and
use dump_printf to report optimization.
(sem_variable::merge): Likwise.
(sem_item_optimizer::merge_classes): Use dump_printf to report
ICF hits.
gcc/testsuite/ChangeLog:
2019-08-08 Martin Liska <mliska@suse.cz>
* g++.dg/ipa/ipa-icf-2.C: Add -optimized to -fdump-ipa-icf.
* g++.dg/ipa/ipa-icf-3.C: Likewise.
* g++.dg/ipa/ipa-icf-4.C: Likewise.
* g++.dg/ipa/ipa-icf-6.C: Likewise.
* gcc.dg/ipa/ipa-icf-1.c: Likewise.
* gcc.dg/ipa/ipa-icf-10.c: Likewise.
* gcc.dg/ipa/ipa-icf-11.c: Likewise.
* gcc.dg/ipa/ipa-icf-12.c: Likewise.
* gcc.dg/ipa/ipa-icf-13.c: Likewise.
* gcc.dg/ipa/ipa-icf-16.c: Likewise.
* gcc.dg/ipa/ipa-icf-18.c: Likewise.
* gcc.dg/ipa/ipa-icf-2.c: Likewise.
* gcc.dg/ipa/ipa-icf-20.c: Likewise.
* gcc.dg/ipa/ipa-icf-21.c: Likewise.
* gcc.dg/ipa/ipa-icf-23.c: Likewise.
* gcc.dg/ipa/ipa-icf-25.c: Likewise.
* gcc.dg/ipa/ipa-icf-26.c: Likewise.
* gcc.dg/ipa/ipa-icf-27.c: Likewise.
* gcc.dg/ipa/ipa-icf-3.c: Likewise.
* gcc.dg/ipa/ipa-icf-35.c: Likewise.
* gcc.dg/ipa/ipa-icf-36.c: Likewise.
* gcc.dg/ipa/ipa-icf-37.c: Likewise.
* gcc.dg/ipa/ipa-icf-38.c: Likewise.
* gcc.dg/ipa/ipa-icf-39.c: Likewise.
* gcc.dg/ipa/ipa-icf-5.c: Likewise.
* gcc.dg/ipa/ipa-icf-7.c: Likewise.
* gcc.dg/ipa/ipa-icf-8.c: Likewise.
* gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
* gcc.dg/ipa/pr64307.c: Likewise.
* gcc.dg/ipa/pr90555.c: Likewise.
---
gcc/ipa-icf.c | 208 +++++++++++----------
gcc/testsuite/g++.dg/ipa/ipa-icf-2.C | 2 +-
gcc/testsuite/g++.dg/ipa/ipa-icf-3.C | 2 +-
gcc/testsuite/g++.dg/ipa/ipa-icf-4.C | 2 +-
gcc/testsuite/g++.dg/ipa/ipa-icf-6.C | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-38.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c | 2 +-
gcc/testsuite/gcc.dg/ipa/ipa-icf-merge-1.c | 2 +-
gcc/testsuite/gcc.dg/ipa/pr64307.c | 2 +-
gcc/testsuite/gcc.dg/ipa/pr90555.c | 2 +-
31 files changed, 144 insertions(+), 124 deletions(-)
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c
index 13e63b77af1..c9c3cb4a331 100644
--- a/gcc/ipa-icf.c
+++ b/gcc/ipa-icf.c
@@ -1024,20 +1024,23 @@ sem_function::merge (sem_item *alias_item)
bool original_address_matters = original->address_matters_p ();
bool alias_address_matters = alias->address_matters_p ();
+ AUTO_DUMP_SCOPE ("merge",
+ dump_user_location_t::from_function_decl (decl));
+
if (DECL_EXTERNAL (alias->decl))
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; alias is external.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; alias is external.\n");
return false;
}
if (DECL_NO_INLINE_WARNING_P (original->decl)
!= DECL_NO_INLINE_WARNING_P (alias->decl))
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; "
- "DECL_NO_INLINE_WARNING mismatch.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; DECL_NO_INLINE_WARNING mismatch.\n");
return false;
}
@@ -1047,21 +1050,20 @@ sem_function::merge (sem_item *alias_item)
|| (DECL_SECTION_NAME (alias->decl) && !alias->implicit_section))
&& DECL_SECTION_NAME (original->decl) != DECL_SECTION_NAME (alias->decl))
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; "
- "original and alias are in different sections.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; "
+ "original and alias are in different sections.\n");
return false;
}
if (!original->in_same_comdat_group_p (alias)
|| original->comdat_local_p ())
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; alias nor wrapper cannot be created; "
- "across comdat group boundary\n\n");
-
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; alias nor wrapper cannot be created; "
+ "across comdat group boundary\n");
return false;
}
@@ -1106,10 +1108,10 @@ sem_function::merge (sem_item *alias_item)
if (!sem_item::compare_referenced_symbol_properties (NULL, original, alias,
alias->address_taken))
{
- if (dump_file)
- fprintf (dump_file,
- "Wrapper cannot be created because referenced symbol "
- "properties mismatch\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Wrapper cannot be created because referenced symbol "
+ "properties mismatch\n");
}
/* Do not turn function in one comdat group into wrapper to another
comdat group. Other compiler producing the body of the
@@ -1120,40 +1122,41 @@ sem_function::merge (sem_item *alias_item)
&& (DECL_COMDAT_GROUP (alias->decl)
!= DECL_COMDAT_GROUP (original->decl)))
{
- if (dump_file)
- fprintf (dump_file,
- "Wrapper cannot be created because of COMDAT\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Wrapper cannot be created because of COMDAT\n");
}
else if (DECL_STATIC_CHAIN (alias->decl)
|| DECL_STATIC_CHAIN (original->decl))
{
- if (dump_file)
- fprintf (dump_file,
- "Cannot create wrapper of nested function.\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Cannot create wrapper of nested function.\n");
}
/* TODO: We can also deal with variadic functions never calling
VA_START. */
else if (stdarg_p (TREE_TYPE (alias->decl)))
{
- if (dump_file)
- fprintf (dump_file,
- "cannot create wrapper of stdarg function.\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "cannot create wrapper of stdarg function.\n");
}
else if (ipa_fn_summaries
&& ipa_fn_summaries->get (alias) != NULL
&& ipa_fn_summaries->get (alias)->self_size <= 2)
{
- if (dump_file)
- fprintf (dump_file, "Wrapper creation is not "
- "profitable (function is too small).\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION, "Wrapper creation is not "
+ "profitable (function is too small).\n");
}
/* If user paid attention to mark function noinline, assume it is
somewhat special and do not try to turn it into a wrapper that
cannot be undone by inliner. */
else if (lookup_attribute ("noinline", DECL_ATTRIBUTES (alias->decl)))
{
- if (dump_file)
- fprintf (dump_file, "Wrappers are not created for noinline.\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Wrappers are not created for noinline.\n");
}
else
create_wrapper = true;
@@ -1171,9 +1174,10 @@ sem_function::merge (sem_item *alias_item)
if (!redirect_callers && !create_wrapper)
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; cannot redirect callers nor "
- "produce wrapper\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; cannot redirect callers nor "
+ "produce wrapper\n");
return false;
}
@@ -1202,17 +1206,18 @@ sem_function::merge (sem_item *alias_item)
redirect_callers = false;
if (!local_original)
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; "
- "cannot produce local alias.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; cannot produce local alias.\n");
return false;
}
if (!redirect_callers && !create_wrapper)
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; "
- "cannot redirect callers nor produce a wrapper\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; "
+ "cannot redirect callers nor produce a wrapper\n");
return false;
}
if (!create_wrapper
@@ -1220,9 +1225,10 @@ sem_function::merge (sem_item *alias_item)
NULL, true)
&& !alias->can_remove_if_no_direct_calls_p ())
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; cannot make wrapper and "
- "function has other uses than direct calls\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; cannot make wrapper and "
+ "function has other uses than direct calls\n");
return false;
}
}
@@ -1238,9 +1244,10 @@ sem_function::merge (sem_item *alias_item)
alias->icf_merged = true;
local_original->icf_merged = true;
- if (dump_file && nredirected)
- fprintf (dump_file, "%i local calls have been "
- "redirected.\n", nredirected);
+ if (dump_enabled_p ())
+ dump_printf (MSG_NOTE,
+ "%i local calls have been "
+ "redirected.\n", nredirected);
}
/* If all callers was redirected, do not produce wrapper. */
@@ -1272,8 +1279,9 @@ sem_function::merge (sem_item *alias_item)
original->call_for_symbol_thunks_and_aliases
(set_local, (void *)(size_t) original->local_p (), true);
- if (dump_file)
- fprintf (dump_file, "Unified; Function alias has been created.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_OPTIMIZED_LOCATIONS,
+ "Unified; Function alias has been created.\n");
}
if (create_wrapper)
{
@@ -1285,8 +1293,9 @@ sem_function::merge (sem_item *alias_item)
ipa_merge_profiles (original, alias, true);
alias->create_wrapper (local_original);
- if (dump_file)
- fprintf (dump_file, "Unified; Wrapper has been created.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_OPTIMIZED_LOCATIONS,
+ "Unified; Wrapper has been created.\n");
}
/* It's possible that redirection can hit thunks that block
@@ -1299,8 +1308,8 @@ sem_function::merge (sem_item *alias_item)
on this optimization. */
if (original->merged_comdat && !alias->merged_comdat)
{
- if (dump_file)
- fprintf (dump_file, "Dropping merged_comdat flag.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_NOTE, "Dropping merged_comdat flag.\n");
if (local_original)
local_original->merged_comdat = false;
original->merged_comdat = false;
@@ -1313,8 +1322,9 @@ sem_function::merge (sem_item *alias_item)
alias->reset ();
alias->body_removed = true;
alias->icf_merged = true;
- if (dump_file)
- fprintf (dump_file, "Unified; Function body was removed.\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_OPTIMIZED_LOCATIONS,
+ "Unified; Function body was removed.\n");
}
return true;
@@ -2085,18 +2095,21 @@ sem_variable::merge (sem_item *alias_item)
{
gcc_assert (alias_item->type == VAR);
+ AUTO_DUMP_SCOPE ("merge",
+ dump_user_location_t::from_function_decl (decl));
if (!sem_item::target_supports_symbol_aliases_p ())
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; "
- "Symbol aliases are not supported by target\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION, "Not unifying; "
+ "Symbol aliases are not supported by target\n");
return false;
}
if (DECL_EXTERNAL (alias_item->decl))
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; alias is external.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; alias is external.\n");
return false;
}
@@ -2128,9 +2141,9 @@ sem_variable::merge (sem_item *alias_item)
if (DECL_IN_CONSTANT_POOL (alias->decl)
|| DECL_IN_CONSTANT_POOL (original->decl))
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; constant pool variables.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; constant pool variables.\n");
return false;
}
@@ -2140,45 +2153,48 @@ sem_variable::merge (sem_item *alias_item)
|| (DECL_SECTION_NAME (alias->decl) && !alias->implicit_section))
&& DECL_SECTION_NAME (original->decl) != DECL_SECTION_NAME (alias->decl))
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; "
- "original and alias are in different sections.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; "
+ "original and alias are in different sections.\n");
return false;
}
/* We cannot merge if address comparsion metters. */
if (alias_address_matters && flag_merge_constants < 2)
{
- if (dump_file)
- fprintf (dump_file,
- "Not unifying; address of original may be compared.\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; address of original may be compared.\n");
return false;
}
if (DECL_ALIGN (original->decl) < DECL_ALIGN (alias->decl))
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; "
- "original and alias have incompatible alignments\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; "
+ "original and alias have incompatible alignments\n");
return false;
}
if (DECL_COMDAT_GROUP (original->decl) != DECL_COMDAT_GROUP (alias->decl))
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; alias cannot be created; "
- "across comdat group boundary\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; alias cannot be created; "
+ "across comdat group boundary\n");
return false;
}
if (original_discardable)
{
- if (dump_file)
- fprintf (dump_file, "Not unifying; alias cannot be created; "
- "target is discardable\n\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_MISSED_OPTIMIZATION,
+ "Not unifying; alias cannot be created; "
+ "target is discardable\n");
return false;
}
@@ -2199,8 +2215,9 @@ sem_variable::merge (sem_item *alias_item)
varpool_node::create_alias (alias_var->decl, decl);
alias->resolve_alias (original);
- if (dump_file)
- fprintf (dump_file, "Unified; Variable alias has been created.\n");
+ if (dump_enabled_p ())
+ dump_printf (MSG_OPTIMIZED_LOCATIONS,
+ "Unified; Variable alias has been created.\n");
return true;
}
@@ -3477,23 +3494,26 @@ sem_item_optimizer::merge_classes (unsigned int prev_class_count)
if (alias == source)
continue;
- if (dump_file)
+ dump_user_location_t loc
+ = dump_user_location_t::from_function_decl (source->decl);
+ if (dump_enabled_p ())
{
- fprintf (dump_file, "Semantic equality hit:%s->%s\n",
- xstrdup_for_dump (source->node->name ()),
- xstrdup_for_dump (alias->node->name ()));
- fprintf (dump_file, "Assembler symbol names:%s->%s\n",
- xstrdup_for_dump (source->node->asm_name ()),
- xstrdup_for_dump (alias->node->asm_name ()));
+ dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
+ "Semantic equality hit:%s->%s\n",
+ xstrdup_for_dump (source->node->name ()),
+ xstrdup_for_dump (alias->node->name ()));
+ dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
+ "Assembler symbol names:%s->%s\n",
+ xstrdup_for_dump (source->node->asm_name ()),
+ xstrdup_for_dump (alias->node->asm_name ()));
}
if (lookup_attribute ("no_icf", DECL_ATTRIBUTES (alias->decl)))
{
- if (dump_file)
- fprintf (dump_file,
- "Merge operation is skipped due to no_icf "
- "attribute.\n\n");
-
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, loc,
+ "Merge operation is skipped due to no_icf "
+ "attribute.\n");
continue;
}
diff --git a/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C b/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C
index 9e780061270..7f56189eebb 100644
--- a/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C
+++ b/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
class A
{
diff --git a/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C b/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C
index 4747b3094d1..5a3cca24fa2 100644
--- a/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C
+++ b/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline))
int zero()
diff --git a/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C b/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C
index b552ef4cb13..86954055382 100644
--- a/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C
+++ b/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf -fno-inline" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized -fno-inline" } */
namespace {
struct A
diff --git a/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C b/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C
index d7650e4b502..7bcb9dc4808 100644
--- a/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C
+++ b/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O3 -fdump-ipa-icf" } */
+/* { dg-options "-O3 -fdump-ipa-icf-optimized" } */
struct A {
A() {ptr=&b;}
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
index a3d88585a9e..8cb9186238c 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
index 5f76c1d87e7..8fdac3883ee 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
int ferda(int x, int y) __attribute__ ((pure));
int funkce(int a, int b) __attribute__ ((pure));
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c
index 2610af9e55c..dbc0cbe7b61 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline))
int fce(int a, int b)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c
index 8e4aa56b032..7ed75f8bfd9 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdlib.h>
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c
index 09d817c4030..d58f182d237 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all" } */
#include <stdlib.h>
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c
index a2613af5dd5..b11cae06534 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c
index e246c2b3404..7753e1e4abb 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline))
int foo(int x)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c
index 983e3d818d0..e6e165a9a62 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c
index 46dc70492f0..42e9ce95f09 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <math.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c
index a20b4a43ffe..ea7164c2ef7 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O2 -msse2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -msse2 -fdump-ipa-icf-optimized" } */
#include <xmmintrin.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c
index 02bb138c28d..805a406efed 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
struct A
{
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c
index 4b364eb7c72..5b963a843e7 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized-all" } */
static int zip();
static int zap();
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c
index 325ece1befa..42c538630c2 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
void destroy (void)
{
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c
index bc49e58cb95..a2ce86ab1db 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf -fno-inline" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized -fno-inline" } */
void destroy (void)
{
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c
index 2ecab2335c2..8d83a281cd0 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
typedef int v4si __attribute__ ((vector_size (16)));
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c
index d194f918fd0..03bac84bdbe 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all" } */
void f1()
{
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c
index 5d125d0e1b7..e630b6dc140 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf -fmerge-all-constants" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all-all-all -fmerge-all-constants" } */
static int a;
static int b;
static const int c = 2;
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c
index 5c02e8ec336..e482bd275d9 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all-all-all" } */
static int a;
static int b;
static const int c = 2;
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-38.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-38.c
index 788038a1c68..b9aea90b400 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-38.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-38.c
@@ -1,5 +1,5 @@
/* { dg-do link } */
-/* { dg-options "-O2 -fdump-ipa-icf -flto -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized -flto -fdump-tree-optimized" } */
/* { dg-require-effective-target lto } */
/* { dg-additional-sources "ipa-icf-38a.c" }*/
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c
index a60721ffbd5..83ccd20ac56 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-39.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-alias "" } */
-/* { dg-options "-O2 -fdump-ipa-icf -fmerge-all-constants -fdbg-cnt=merged_ipa_icf:1:3" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized -fmerge-all-constants -fdbg-cnt=merged_ipa_icf:1:3" } */
/* { dg-prune-output "dbg_cnt 'merged_ipa_icf' set to 1-3" } */
/* { dg-prune-output "\\*\\*\\*dbgcnt:.*limit.*reached" } */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c
index b2d48f9d79d..40d71740f65 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target c99_runtime } } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
/* { dg-add-options c99_runtime } */
#include <complex.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c
index 488e133d93f..87a6d261b3b 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target c99_runtime } } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
/* { dg-add-options c99_runtime } */
#include <complex.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c
index 8ee46d034e7..fe95c2ccd56 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-ipa-icf" } */
+/* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-icf-merge-1.c b/gcc/testsuite/gcc.dg/ipa/ipa-icf-merge-1.c
index 06958a4d69d..f96e8e866a4 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-icf-merge-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-icf-merge-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-additional-options "-O2 -fdump-ipa-icf" } */
+/* { dg-additional-options "-O2 -fdump-ipa-icf-optimized" } */
/* Picking 'main' as a candiate target for equivalent functios is not a
good idea. */
diff --git a/gcc/testsuite/gcc.dg/ipa/pr64307.c b/gcc/testsuite/gcc.dg/ipa/pr64307.c
index 79d93af6eb7..e2c9121c037 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr64307.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr64307.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target c99_runtime } } */
-/* { dg-options "-O0 -fipa-icf -fdump-ipa-icf" } */
+/* { dg-options "-O0 -fipa-icf -fdump-ipa-icf-optimized" } */
#include <complex.h>
diff --git a/gcc/testsuite/gcc.dg/ipa/pr90555.c b/gcc/testsuite/gcc.dg/ipa/pr90555.c
index 327cff9dcdd..d357405bb9a 100644
--- a/gcc/testsuite/gcc.dg/ipa/pr90555.c
+++ b/gcc/testsuite/gcc.dg/ipa/pr90555.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-fopenmp-simd -O2 -mavx512f -fdump-ipa-icf" } */
+/* { dg-options "-fopenmp-simd -O2 -mavx512f -fdump-ipa-icf-optimized" } */
#define N 1024
int a[N];