Commit fe6c4dc4 by Martin Liska Committed by Martin Liska

Implement -fopt-info support for IPA ICF.

2019-08-09  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.
2019-08-09  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.

From-SVN: r274230
parent c220ecd2
2019-08-09 Martin Liska <mliska@suse.cz> 2019-08-09 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.
2019-08-09 Martin Liska <mliska@suse.cz>
* value-prof.c (gimple_divmod_fixed_value_transform): * value-prof.c (gimple_divmod_fixed_value_transform):
Use dump_printf_loc. Use dump_printf_loc.
(gimple_mod_pow2_value_transform): Likewise. (gimple_mod_pow2_value_transform): Likewise.
......
2019-08-09 Martin Liska <mliska@suse.cz> 2019-08-09 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.
2019-08-09 Martin Liska <mliska@suse.cz>
* g++.dg/tree-prof/indir-call-prof.C: Add -optimize * g++.dg/tree-prof/indir-call-prof.C: Add -optimize
to -fdump-ipa-profile. to -fdump-ipa-profile.
* g++.dg/tree-prof/morefunc.C: Likewise. * g++.dg/tree-prof/morefunc.C: Likewise.
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
class A class A
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline)) __attribute__ ((noinline))
int zero() int zero()
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf -fno-inline" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized -fno-inline" } */
namespace { namespace {
struct A struct A
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-options "-O3 -fdump-ipa-icf" } */ /* { dg-options "-O3 -fdump-ipa-icf-optimized" } */
struct A { struct A {
A() {ptr=&b;} A() {ptr=&b;}
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { 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 ferda(int x, int y) __attribute__ ((pure));
int funkce(int a, int b) __attribute__ ((pure)); int funkce(int a, int b) __attribute__ ((pure));
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline)) __attribute__ ((noinline))
int fce(int a, int b) int fce(int a, int b)
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all" } */
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
__attribute__ ((noinline)) __attribute__ ((noinline))
int foo(int x) int foo(int x)
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <math.h> #include <math.h>
......
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { 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> #include <xmmintrin.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
struct A struct A
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized-all" } */
static int zip(); static int zip();
static int zap(); static int zap();
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
void destroy (void) void destroy (void)
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf -fno-inline" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized -fno-inline" } */
void destroy (void) void destroy (void)
{ {
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
typedef int v4si __attribute__ ((vector_size (16))); typedef int v4si __attribute__ ((vector_size (16)));
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized-all-all" } */
void f1() void f1()
{ {
......
/* { dg-do compile } */ /* { 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 a;
static int b; static int b;
static const int c = 2; static const int c = 2;
......
/* { dg-do compile } */ /* { 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 a;
static int b; static int b;
static const int c = 2; static const int c = 2;
......
/* { dg-do link } */ /* { 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-require-effective-target lto } */
/* { dg-additional-sources "ipa-icf-38a.c" }*/ /* { dg-additional-sources "ipa-icf-38a.c" }*/
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-alias "" } */ /* { 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 "dbg_cnt 'merged_ipa_icf' set to 1-3" } */
/* { dg-prune-output "\\*\\*\\*dbgcnt:.*limit.*reached" } */ /* { dg-prune-output "\\*\\*\\*dbgcnt:.*limit.*reached" } */
......
/* { dg-do compile { target c99_runtime } } */ /* { dg-do compile { target c99_runtime } } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
/* { dg-add-options c99_runtime } */ /* { dg-add-options c99_runtime } */
#include <complex.h> #include <complex.h>
......
/* { dg-do compile { target c99_runtime } } */ /* { dg-do compile { target c99_runtime } } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
/* { dg-add-options c99_runtime } */ /* { dg-add-options c99_runtime } */
#include <complex.h> #include <complex.h>
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -fdump-ipa-icf" } */ /* { dg-options "-O2 -fdump-ipa-icf-optimized" } */
#include <stdio.h> #include <stdio.h>
......
/* { dg-do compile } */ /* { 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 /* Picking 'main' as a candiate target for equivalent functios is not a
good idea. */ good idea. */
......
/* { dg-do compile { target c99_runtime } } */ /* { 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> #include <complex.h>
......
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ /* { 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 #define N 1024
int a[N]; int a[N];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment