invoke.texi: Update -fopt-info documentation.

2012-11-01  Sharad Singhai  <singhai@google.com>

    * doc/invoke.texi: Update -fopt-info documentation.
    * dumpfile.c: Move dump_flags here from passes.c.
    Rename opt_info_options to optinfo_verbosity_options.
    Add optgroup_options.
    (dump_files): Add field for optinfo_flags in the static initializer.
    (dump_register): Handle additional parameter for optgroup_flags.
    (opt_info_enable_passes): Renamed opt_info_enable_all. Handle
    optgroup_flags. Fix documentation.
    (opt_info_switch_p_1): Handle optgroup options.
    (opt_info_switch_p): Handle optgroup_flags. Warn on multiple files.
    * dumpfile.h (dump_register): Additional argument for optgroup_flags.
    All callers updated.
    (struct dump_file_info): Add field for optgroup_flags.
    Define OPTGROUP_* flags.
    * tree-pass.h (struct opt_pass): Add addtional field for optinfo_flags.
    All opt_pass static initializers updated.
    * opts-global.c (dump_remap_tree_vectorizer_verbose): Use 'all'
    instead of 'optall'.
    (handle_common_deferred_options): Fix typo in error message.
    * passes.c (register_one_dump_file): Add argument for optgroup_flags.
    Turn on OPTGROUP_IPA for IPA passes.
    Move dump_flags from here to dumpfile.c.
    * statistics.c (statistics_early_init): Use OPTGROUP_NONE in call to
    dump_register.

testsuite/ChangeLog

    * testsuite/gcc.dg/plugin/selfassign.c: Add opgtroup_flags initializer.
    * testsuite/gcc.dg/plugin/one_time_plugin.c: Likewise.
    * testsuite/g++.dg/plugin/selfassign.c: Likewise.
    * testsuite/g++.dg/plugin/dumb_plugin.c: Likewise.

From-SVN: r193061
This commit is contained in:
Sharad Singhai 2012-11-01 07:34:44 +00:00 committed by Sharad Singhai
parent c3a76b2f48
commit 2b4e6bf1d5
119 changed files with 460 additions and 84 deletions

View File

@ -1,3 +1,30 @@
2012-11-01 Sharad Singhai <singhai@google.com>
* doc/invoke.texi: Update -fopt-info documentation.
* dumpfile.c: Move dump_flags here from passes.c.
Rename opt_info_options to optinfo_verbosity_options.
Add optgroup_options.
(dump_files): Add field for optinfo_flags in the static initializer.
(dump_register): Handle additional parameter for optgroup_flags.
(opt_info_enable_passes): Renamed opt_info_enable_all. Handle
optgroup_flags. Fix documentation.
(opt_info_switch_p_1): Handle optgroup options.
(opt_info_switch_p): Handle optgroup_flags. Warn on multiple files.
* dumpfile.h (dump_register): Additional argument for optgroup_flags.
All callers updated.
(struct dump_file_info): Add field for optgroup_flags.
Define OPTGROUP_* flags.
* tree-pass.h (struct opt_pass): Add addtional field for optinfo_flags.
All opt_pass static initializers updated.
* opts-global.c (dump_remap_tree_vectorizer_verbose): Use 'all'
instead of 'optall'.
(handle_common_deferred_options): Fix typo in error message.
* passes.c (register_one_dump_file): Add argument for optgroup_flags.
Turn on OPTGROUP_IPA for IPA passes.
Move dump_flags from here to dumpfile.c.
* statistics.c (statistics_early_init): Use OPTGROUP_NONE in call to
dump_register.
2012-11-01 Joern Rennecke <joern.rennecke@embecosm.com>
PR target/55160

View File

@ -1511,6 +1511,7 @@ struct rtl_opt_pass pass_inc_dec =
{
RTL_PASS,
"auto_inc_dec", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_auto_inc_dec, /* gate */
rest_of_handle_auto_inc_dec, /* execute */
NULL, /* sub */

View File

@ -2234,6 +2234,7 @@ struct rtl_opt_pass pass_reorder_blocks =
{
RTL_PASS,
"bbro", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_reorder_blocks, /* gate */
rest_of_handle_reorder_blocks, /* execute */
NULL, /* sub */
@ -2376,6 +2377,7 @@ struct rtl_opt_pass pass_duplicate_computed_gotos =
{
RTL_PASS,
"compgotos", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_duplicate_computed_gotos, /* gate */
duplicate_computed_gotos, /* execute */
NULL, /* sub */
@ -2579,6 +2581,7 @@ struct rtl_opt_pass pass_partition_blocks =
{
RTL_PASS,
"bbpart", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_partition_blocks, /* gate */
partition_hot_cold_basic_blocks, /* execute */
NULL, /* sub */

View File

@ -1,3 +1,4 @@
/* Perform branch target register load optimizations.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
@ -1509,6 +1510,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize1 =
{
RTL_PASS,
"btl1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_branch_target_load_optimize1, /* gate */
rest_of_handle_branch_target_load_optimize1, /* execute */
NULL, /* sub */
@ -1558,6 +1560,7 @@ struct rtl_opt_pass pass_branch_target_load_optimize2 =
{
RTL_PASS,
"btl2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_branch_target_load_optimize2, /* gate */
rest_of_handle_branch_target_load_optimize2, /* execute */
NULL, /* sub */

View File

@ -3008,6 +3008,7 @@ struct rtl_opt_pass pass_jump =
{
RTL_PASS,
"jump", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_jump, /* execute */
NULL, /* sub */
@ -3034,6 +3035,7 @@ struct rtl_opt_pass pass_jump2 =
{
RTL_PASS,
"jump2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_jump2, /* execute */
NULL, /* sub */

View File

@ -4677,6 +4677,7 @@ struct rtl_opt_pass pass_expand =
{
RTL_PASS,
"expand", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
gimple_expand_cfg, /* execute */
NULL, /* sub */

View File

@ -456,6 +456,7 @@ struct rtl_opt_pass pass_free_cfg =
{
RTL_PASS,
"*free_cfg", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_pass_free_cfg, /* execute */
NULL, /* sub */
@ -2998,6 +2999,7 @@ struct rtl_opt_pass pass_into_cfg_layout_mode =
{
RTL_PASS,
"into_cfglayout", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
into_cfg_layout_mode, /* execute */
NULL, /* sub */
@ -3017,6 +3019,7 @@ struct rtl_opt_pass pass_outof_cfg_layout_mode =
{
RTL_PASS,
"outof_cfglayout", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
outof_cfg_layout_mode, /* execute */
NULL, /* sub */

View File

@ -370,6 +370,7 @@ struct gimple_opt_pass pass_build_cgraph_edges =
{
GIMPLE_PASS,
"*build_cgraph_edges", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
build_cgraph_edges, /* execute */
NULL, /* sub */
@ -487,6 +488,7 @@ struct gimple_opt_pass pass_rebuild_cgraph_edges =
{
GIMPLE_PASS,
"*rebuild_cgraph_edges", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rebuild_cgraph_edges, /* execute */
NULL, /* sub */
@ -514,6 +516,7 @@ struct gimple_opt_pass pass_remove_cgraph_callee_edges =
{
GIMPLE_PASS,
"*remove_cgraph_callee_edges", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
remove_cgraph_callee_edges, /* execute */
NULL, /* sub */

View File

@ -650,6 +650,7 @@ struct rtl_opt_pass pass_stack_adjustments =
{
RTL_PASS,
"csa", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_stack_adjustments, /* gate */
rest_of_handle_stack_adjustments, /* execute */
NULL, /* sub */

View File

@ -13817,6 +13817,7 @@ struct rtl_opt_pass pass_combine =
{
RTL_PASS,
"combine", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_combine, /* gate */
rest_of_handle_combine, /* execute */
NULL, /* sub */

View File

@ -660,6 +660,7 @@ struct rtl_opt_pass pass_compare_elim_after_reload =
{
RTL_PASS,
"cmpelim", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_compare_elim_after_reload, /* gate */
execute_compare_elim_after_reload, /* execute */
NULL, /* sub */

View File

@ -76,6 +76,7 @@ struct rtl_opt_pass pass_mode_switch_use =
{
RTL_PASS,
"mode_switch_use", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
insert_uses, /* execute */
NULL, /* sub */

View File

@ -166,6 +166,7 @@ struct rtl_opt_pass pass_resolve_sw_modes =
{
RTL_PASS,
"resolve_sw_modes", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_resolve_sw_modes, /* gate */
resolve_sw_modes, /* execute */
NULL, /* sub */

View File

@ -133,6 +133,7 @@ static struct opt_pass rl78_devirt_pass =
{
RTL_PASS,
"devirt",
OPTGROUP_NONE, /* optinfo_flags */
devirt_gate,
devirt_pass,
NULL,

View File

@ -1923,6 +1923,7 @@ struct rtl_opt_pass pass_rtl_cprop =
{
RTL_PASS,
"cprop", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_rtl_cprop, /* gate */
execute_rtl_cprop, /* execute */
NULL, /* sub */

View File

@ -7456,6 +7456,7 @@ struct rtl_opt_pass pass_cse =
{
RTL_PASS,
"cse1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_cse, /* gate */
rest_of_handle_cse, /* execute */
NULL, /* sub */
@ -7518,6 +7519,7 @@ struct rtl_opt_pass pass_cse2 =
{
RTL_PASS,
"cse2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_cse2, /* gate */
rest_of_handle_cse2, /* execute */
NULL, /* sub */
@ -7578,6 +7580,7 @@ struct rtl_opt_pass pass_cse_after_global_opts =
{
RTL_PASS,
"cse_local", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_cse_after_global_opts, /* gate */
rest_of_handle_cse_after_global_opts, /* execute */
NULL, /* sub */

View File

@ -786,6 +786,7 @@ struct rtl_opt_pass pass_ud_rtl_dce =
{
RTL_PASS,
"ud_dce", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_ud_dce, /* gate */
rest_of_handle_ud_dce, /* execute */
NULL, /* sub */
@ -1201,6 +1202,7 @@ struct rtl_opt_pass pass_fast_rtl_dce =
{
RTL_PASS,
"rtl_dce", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_fast_dce, /* gate */
rest_of_handle_fast_dce, /* execute */
NULL, /* sub */

View File

@ -754,6 +754,7 @@ struct rtl_opt_pass pass_df_initialize_opt =
{
RTL_PASS,
"dfinit", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_opt, /* gate */
rest_of_handle_df_initialize, /* execute */
NULL, /* sub */
@ -781,6 +782,7 @@ struct rtl_opt_pass pass_df_initialize_no_opt =
{
RTL_PASS,
"no-opt dfinit", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_no_opt, /* gate */
rest_of_handle_df_initialize, /* execute */
NULL, /* sub */
@ -828,6 +830,7 @@ struct rtl_opt_pass pass_df_finish =
{
RTL_PASS,
"dfinish", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_df_finish, /* execute */
NULL, /* sub */

View File

@ -6021,58 +6021,108 @@ Enable all the available tree dumps with the flags provided in this option.
@itemx -fopt-info-@var{options}
@itemx -fopt-info-@var{options}=@var{filename}
@opindex fopt-info
Controls optimization dumps from all the passes. If the
Controls optimization dumps from various optimization passes. If the
@samp{-@var{options}} form is used, @var{options} is a list of
@samp{-} separated options to control the dump details. If
@var{options} is not specified, it defaults to @option{optall}. If the
@var{filename} is not specified, it defaults to @file{stderr}. Note
that the output @var{filename} will be overwritten in case of multiple
translation units. If a combined output from multiple translation
units is desired, @file{stderr} should be used instead.
@samp{-} separated options to select the dump details and
optimizations. If @var{options} is not specified, it defaults to
@option{all} for details and @option{optall} for optimization
groups. If the @var{filename} is not specified, it defaults to
@file{stderr}. Note that the output @var{filename} will be overwritten
in case of multiple translation units. If a combined output from
multiple translation units is desired, @file{stderr} should be used
instead.
The following options are available
The options can be divided into two groups, 1) options describing the
verbosity of the dump, and 2) options describing which optimizations
should be included. The options from both the groups can be freely
mixed as they are non-overlapping. However, in case of any conflicts,
the latter options override the earlier options on the command
line. Though multiple -fopt-info options are accepted, only one of
them can have @option{=filename}. If other filenames are provided then
all but the first one are ignored.
The dump verbosity has the following options
@table @samp
@item optimized
Print information when an optimization is successfully applied. It is
up to a pass to decide which information is relevant. For example, the
vectorizer pass prints the location of loop which got vectorized.
vectorizer passes print the source location of loops which got
successfully vectorized.
@item missed
Print information about missed optimizations. Individual passes
control which information to include in the output. For example,
control which informations to include in the output. For example,
@smallexample
gcc -O2 -ftree-vectorize -fopt-info-missed
gcc -O2 -ftree-vectorize -fopt-info-vec-missed
@end smallexample
will print information about missed optimization opportunities on
stderr.
will print information about missed optimization opportunities from
vectorization passes on stderr.
@item note
Print verbose information about optimizations, such as certain
transformations, more detailed messages about decisions etc.
@item optall
@item all
Print detailed optimization information. This includes
@var{optimized}, @var{missed}, and @var{note}. For example,
@smallexample
gcc -O2 -ftree-vectorize -fopt-info-optall=opt.all
@end smallexample
outputs detailed optimization report from all the passes into
@file{opt.all}.
@var{optimized}, @var{missed}, and @var{note}.
@end table
It applies the dump options to all the passes. If the @var{filename}
is provided, the dump from all the passes is concatenated, otherwise
the dump is output onto @file{stderr}. If @var{options} is omitted, it
defaults to @option{optall}.
The second set of options describes a group of optimizations and may
include one or more of the following.
@table @samp
@item ipa
Enable dumps from all interprocedural optimizations.
@item loop
Enable dumps from all loop optimizations.
@item inline
Enable dumps from all inlining optimizations.
@item vec
Enable dumps from all vectorization optimizations.
@end table
For example,
@smallexample
gcc -O3 -fopt-info-optimized-missed=optdump.txt
gcc -O3 -fopt-info-missed=missed.all
@end smallexample
This will output information about missed optimizations as well as
optimized locations from all the passes into @file{optdump.txt}.
outputs missed optimization report from all the passes into
@file{missed.all}.
As another example,
@smallexample
gcc -O3 -fopt-info-inline-optimized-missed=inline.txt
@end smallexample
will output information about missed optimizations as well as
optimized locations from all the inlining passes into
@file{inline.txt}.
If the @var{filename} is provided, then the dumps from all the
applicable optimizations are concatenated into the @file{filename}.
Otherwise the dump is output onto @file{stderr}. If @var{options} is
omitted, it defaults to @option{all-optall}, which means dump all
available optimization info from all the passes. In the following
example, all optimization info is output on to @file{stderr}.
@smallexample
gcc -O3 -fopt-info
@end smallexample
Note that @option{-fopt-info-vec-missed} behaves the same as
@option{-fopt-info-missed-vec}.
As another example, consider
@smallexample
gcc -fopt-info-vec-missed=vec.miss -fopt-info-loop-optimized=loop.opt
@end smallexample
Here the two output filenames @file{vec.miss} and @file{loop.opt} are
in conflict since only one output file is allowed. In this case, only
the first option takes effect and the subsequent options are
ignored. Thus only the @file{vec.miss} is produced which cotaints
dumps from the vectorizer about missed opportunities.
@item -ftree-vectorizer-verbose=@var{n}
@opindex ftree-vectorizer-verbose

View File

@ -3934,6 +3934,7 @@ struct rtl_opt_pass pass_rtl_dse1 =
{
RTL_PASS,
"dse1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dse1, /* gate */
rest_of_handle_dse, /* execute */
NULL, /* sub */
@ -3954,6 +3955,7 @@ struct rtl_opt_pass pass_rtl_dse2 =
{
RTL_PASS,
"dse2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dse2, /* gate */
rest_of_handle_dse, /* execute */
NULL, /* sub */

View File

@ -43,34 +43,35 @@ static FILE *dump_open_alternate_stream (struct dump_file_info *);
FILE *dump_file = NULL;
FILE *alt_dump_file = NULL;
const char *dump_file_name;
int dump_flags;
/* Table of tree dump switches. This must be consistent with the
TREE_DUMP_INDEX enumeration in dumpfile.h. */
static struct dump_file_info dump_files[TDI_end] =
{
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0},
{NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0},
{".cgraph", "ipa-cgraph", NULL, NULL, NULL, NULL, NULL, TDF_IPA,
0, 0, 0, 0},
0, 0, 0, 0, 0},
{".tu", "translation-unit", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 1},
0, 0, 0, 0, 1},
{".class", "class-hierarchy", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 2},
0, 0, 0, 0, 2},
{".original", "tree-original", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 3},
0, 0, 0, 0, 3},
{".gimple", "tree-gimple", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 4},
0, 0, 0, 0, 4},
{".nested", "tree-nested", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 5},
0, 0, 0, 0, 5},
{".vcg", "tree-vcg", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 6},
0, 0, 0, 0, 6},
#define FIRST_AUTO_NUMBERED_DUMP 7
{NULL, "tree-all", NULL, NULL, NULL, NULL, NULL, TDF_TREE,
0, 0, 0, 0},
0, 0, 0, 0, 0},
{NULL, "rtl-all", NULL, NULL, NULL, NULL, NULL, TDF_RTL,
0, 0, 0, 0},
0, 0, 0, 0, 0},
{NULL, "ipa-all", NULL, NULL, NULL, NULL, NULL, TDF_IPA,
0, 0, 0, 0},
0, 0, 0, 0, 0},
};
/* Dynamically registered tree dump files and switches. */
@ -117,24 +118,32 @@ static const struct dump_option_value_info dump_options[] =
{NULL, 0}
};
/* A subset of the dump_options table which is used for opt-info
options. This must be consistent with the MSG_* flags in
dump_options.
/* A subset of the dump_options table which is used for -fopt-info
types. This must be consistent with the MSG_* flags in dumpfile.h.
*/
static const struct dump_option_value_info opt_info_options[] =
static const struct dump_option_value_info optinfo_verbosity_options[] =
{
{"optimized", MSG_OPTIMIZED_LOCATIONS},
{"missed", MSG_MISSED_OPTIMIZATION},
{"note", MSG_NOTE},
{"optall", (MSG_OPTIMIZED_LOCATIONS
| MSG_MISSED_OPTIMIZATION
| MSG_NOTE)},
{"all", MSG_ALL},
{NULL, 0}
};
/* Flags used for -fopt-info groups. */
static const struct dump_option_value_info optgroup_options[] =
{
{"ipa", OPTGROUP_IPA},
{"loop", OPTGROUP_LOOP},
{"inline", OPTGROUP_INLINE},
{"vec", OPTGROUP_VEC},
{"optall", OPTGROUP_ALL},
{NULL, 0}
};
unsigned int
dump_register (const char *suffix, const char *swtch, const char *glob,
int flags)
int flags, int optgroup_flags)
{
static int next_dump = FIRST_AUTO_NUMBERED_DUMP;
int num = next_dump++;
@ -157,6 +166,7 @@ dump_register (const char *suffix, const char *swtch, const char *glob,
extra_dump_files[count].swtch = swtch;
extra_dump_files[count].glob = glob;
extra_dump_files[count].pflags = flags;
extra_dump_files[count].optgroup_flags = optgroup_flags;
extra_dump_files[count].num = num;
return count + TDI_end;
@ -376,8 +386,8 @@ dump_printf_loc (int dump_kind, source_location loc, const char *format, ...)
/* Start a dump for PHASE. Store user-supplied dump flags in
*FLAG_PTR. Return the number of streams opened. Set globals
DUMP_FILE, and ALT_DUMP_FILE to point to the opened streams, and
set dump_flags appropriately for both pass dump stream and opt-info
stream. */
set dump_flags appropriately for both pass dump stream and
-fopt-info stream. */
int
dump_start (int phase, int *flag_ptr)
@ -418,7 +428,7 @@ dump_start (int phase, int *flag_ptr)
dfi->alt_stream = stream;
count++;
alt_dump_file = dfi->alt_stream;
/* Initialize current opt-info flags. */
/* Initialize current -fopt-info flags. */
alt_flags = dfi->alt_flags;
}
@ -603,18 +613,19 @@ dump_enable_all (int flags, const char *filename)
return n;
}
/* Enable opt-info dumps on all IR_DUMP_TYPE passes with FLAGS on
FILENAME. Return the number of enabled dumps. */
/* Enable -fopt-info dumps on all dump files matching OPTGROUP_FLAGS.
Enable dumps with FLAGS on FILENAME. Return the number of enabled
dumps. */
static int
opt_info_enable_all (int ir_dump_type, int flags, const char *filename)
opt_info_enable_passes (int optgroup_flags, int flags, const char *filename)
{
int n = 0;
size_t i;
for (i = TDI_none + 1; i < (size_t) TDI_end; i++)
{
if ((dump_files[i].pflags & ir_dump_type))
if ((dump_files[i].optgroup_flags & optgroup_flags))
{
const char *old_filename = dump_files[i].alt_filename;
/* Since this file is shared among different passes, it
@ -632,7 +643,7 @@ opt_info_enable_all (int ir_dump_type, int flags, const char *filename)
for (i = 0; i < extra_dump_files_in_use; i++)
{
if ((extra_dump_files[i].pflags & ir_dump_type))
if ((extra_dump_files[i].optgroup_flags & optgroup_flags))
{
const char *old_filename = extra_dump_files[i].alt_filename;
/* Since this file is shared among different passes, it
@ -753,11 +764,12 @@ dump_switch_p (const char *arg)
return any;
}
/* Parse ARG as a -fopt-info switch and store flags and filename.
Return non-zero if it is a recognized switch. */
/* Parse ARG as a -fopt-info switch and store flags, optgroup_flags
and filename. Return non-zero if it is a recognized switch. */
static int
opt_info_switch_p_1 (const char *arg, int *flags, char **filename)
opt_info_switch_p_1 (const char *arg, int *flags, int *optgroup_flags,
char **filename)
{
const char *option_value;
const char *ptr;
@ -767,9 +779,10 @@ opt_info_switch_p_1 (const char *arg, int *flags, char **filename)
*filename = NULL;
*flags = 0;
*optgroup_flags = 0;
if (!ptr)
return 1;
return 1; /* Handle '-fopt-info' without any additional options. */
while (*ptr)
{
@ -790,7 +803,8 @@ opt_info_switch_p_1 (const char *arg, int *flags, char **filename)
end_ptr = ptr + strlen (ptr);
length = end_ptr - ptr;
for (option_ptr = opt_info_options; option_ptr->name; option_ptr++)
for (option_ptr = optinfo_verbosity_options; option_ptr->name;
option_ptr++)
if (strlen (option_ptr->name) == length
&& !memcmp (option_ptr->name, ptr, length))
{
@ -798,6 +812,14 @@ opt_info_switch_p_1 (const char *arg, int *flags, char **filename)
goto found;
}
for (option_ptr = optgroup_options; option_ptr->name; option_ptr++)
if (strlen (option_ptr->name) == length
&& !memcmp (option_ptr->name, ptr, length))
{
*optgroup_flags |= option_ptr->value;
goto found;
}
if (*ptr == '=')
{
/* Interpret rest of the argument as a dump filename. This
@ -806,8 +828,11 @@ opt_info_switch_p_1 (const char *arg, int *flags, char **filename)
break;
}
else
warning (0, "ignoring unknown option %q.*s in %<-fopt-info=%s%>",
length, ptr, arg);
{
warning (0, "unknown option %q.*s in %<-fopt-info-%s%>",
length, ptr, arg);
return 0;
}
found:;
ptr = end_ptr;
}
@ -822,16 +847,31 @@ int
opt_info_switch_p (const char *arg)
{
int flags;
int optgroup_flags;
char *filename;
static char *file_seen = NULL;
opt_info_switch_p_1 (arg, &flags, &filename);
if (!opt_info_switch_p_1 (arg, &flags, &optgroup_flags, &filename))
return 0;
if (!filename)
filename = xstrdup ("stderr");
/* Bail out if a different filename has been specified. */
if (file_seen && strcmp (file_seen, filename))
{
warning (0, "ignoring possibly conflicting option %<-fopt-info-%s%>",
arg);
return 1;
}
file_seen = xstrdup (filename);
if (!flags)
flags = MSG_ALL;
if (!optgroup_flags)
optgroup_flags = OPTGROUP_ALL;
return opt_info_enable_all ((TDF_TREE | TDF_RTL | TDF_IPA), flags, filename);
return opt_info_enable_passes (optgroup_flags, flags, filename);
}
/* Print basic block on the dump streams. */

View File

@ -25,7 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "line-map.h"
/* Different tree dump places. When you add new tree dump places,
extend the DUMP_FILES array in tree-dump.c. */
extend the DUMP_FILES array in dumpfile.c. */
enum tree_dump_index
{
TDI_none, /* No dump */
@ -46,9 +46,9 @@ enum tree_dump_index
/* Bit masks to control dumping. Not all values are applicable to all
dumps. Add new ones at the end. When you define new values, extend
the DUMP_OPTIONS array in tree-dump.c. The TDF_* flags coexist with
MSG_* flags (for -fopt-info) and the bit values must be chosen
to allow that. */
the DUMP_OPTIONS array in dumpfile.c. The TDF_* flags coexist with
MSG_* flags (for -fopt-info) and the bit values must be chosen to
allow that. */
#define TDF_ADDRESS (1 << 0) /* dump node addresses */
#define TDF_SLIM (1 << 1) /* don't go wild following links */
#define TDF_RAW (1 << 2) /* don't unparse the function */
@ -91,6 +91,18 @@ enum tree_dump_index
#define MSG_ALL (MSG_OPTIMIZED_LOCATIONS | MSG_MISSED_OPTIMIZATION \
| MSG_NOTE)
/* Flags to control high-level -fopt-info dumps. Usually these flags
define a group of passes. An optimization pass can be part of
multiple groups. */
#define OPTGROUP_NONE (0)
#define OPTGROUP_IPA (1 << 1) /* IPA optimization passes */
#define OPTGROUP_LOOP (1 << 2) /* Loop optimization passes */
#define OPTGROUP_INLINE (1 << 3) /* Inlining passes */
#define OPTGROUP_VEC (1 << 4) /* Vectorization passes */
#define OPTGROUP_ALL (OPTGROUP_IPA | OPTGROUP_LOOP | OPTGROUP_INLINE \
| OPTGROUP_VEC)
/* Define a tree dump switch. */
struct dump_file_info
{
@ -98,13 +110,14 @@ struct dump_file_info
const char *swtch; /* command line dump switch */
const char *glob; /* command line glob */
const char *pfilename; /* filename for the pass-specific stream */
const char *alt_filename; /* filename for the opt-info stream */
const char *alt_filename; /* filename for the -fopt-info stream */
FILE *pstream; /* pass-specific dump stream */
FILE *alt_stream; /* opt-info stream */
FILE *alt_stream; /* -fopt-info stream */
int optgroup_flags; /* optgroup flags for -fopt-info */
int pflags; /* dump flags */
int alt_flags; /* flags for opt-info */
int pstate; /* state of pass-specific stream */
int alt_state; /* state of the opt-info stream */
int alt_state; /* state of the -fopt-info stream */
int num; /* dump file number */
};
@ -129,7 +142,7 @@ extern void dump_gimple_stmt_loc (int, source_location, int, gimple, int);
extern void dump_gimple_stmt (int, int, gimple, int);
extern void print_combine_total_stats (void);
extern unsigned int dump_register (const char *, const char *, const char *,
int);
int, int);
extern bool enable_rtl_dump_file (void);
/* In combine.c */
@ -146,8 +159,7 @@ extern const char *dump_file_name;
/* Return the dump_file_info for the given phase. */
extern struct dump_file_info *get_dump_file_info (int);
/* Return true if any of the dumps are enabled, false otherwise. */
/* Return true if any of the dumps is enabled, false otherwise. */
static inline bool
dump_enabled_p (void)
{

View File

@ -3388,6 +3388,7 @@ struct rtl_opt_pass pass_dwarf2_frame =
{
RTL_PASS,
"dwarf2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dwarf2_frame, /* gate */
execute_dwarf2_frame, /* execute */
NULL, /* sub */

View File

@ -1920,6 +1920,7 @@ struct rtl_opt_pass pass_set_nothrow_function_flags =
{
RTL_PASS,
"nothrow", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
set_nothrow_function_flags, /* execute */
NULL, /* sub */
@ -2569,6 +2570,7 @@ struct rtl_opt_pass pass_convert_to_eh_region_ranges =
{
RTL_PASS,
"eh_ranges", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_convert_to_eh_region_ranges, /* gate */
convert_to_eh_region_ranges, /* execute */
NULL, /* sub */

View File

@ -822,6 +822,7 @@ struct rtl_opt_pass pass_compute_alignments =
{
RTL_PASS,
"alignments", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
compute_alignments, /* execute */
NULL, /* sub */
@ -4373,6 +4374,7 @@ struct rtl_opt_pass pass_final =
{
RTL_PASS,
"final", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_final, /* execute */
NULL, /* sub */
@ -4401,6 +4403,7 @@ struct rtl_opt_pass pass_shorten_branches =
{
RTL_PASS,
"shorten", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_shorten_branches, /* execute */
NULL, /* sub */
@ -4547,6 +4550,7 @@ struct rtl_opt_pass pass_clean_state =
{
RTL_PASS,
"*clean_state", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_clean_state, /* execute */
NULL, /* sub */

View File

@ -1949,6 +1949,7 @@ struct rtl_opt_pass pass_instantiate_virtual_regs =
{
RTL_PASS,
"vregs", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
instantiate_virtual_regs, /* execute */
NULL, /* sub */
@ -6925,6 +6926,7 @@ struct rtl_opt_pass pass_leaf_regs =
{
RTL_PASS,
"*leaf_regs", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_check_leaf_regs, /* execute */
NULL, /* sub */
@ -6963,6 +6965,7 @@ struct rtl_opt_pass pass_thread_prologue_and_epilogue =
{
RTL_PASS,
"pro_and_epilogue", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_thread_prologue_and_epilogue, /* execute */
NULL, /* sub */
@ -7164,6 +7167,7 @@ struct rtl_opt_pass pass_match_asm_constraints =
{
RTL_PASS,
"asmcons", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_match_asm_constraints, /* execute */
NULL, /* sub */

View File

@ -1486,6 +1486,7 @@ struct rtl_opt_pass pass_rtl_fwprop =
{
RTL_PASS,
"fwprop1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_fwprop, /* gate */
fwprop, /* execute */
NULL, /* sub */
@ -1535,6 +1536,7 @@ struct rtl_opt_pass pass_rtl_fwprop_addr =
{
RTL_PASS,
"fwprop2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_fwprop, /* gate */
fwprop_addr, /* execute */
NULL, /* sub */

View File

@ -4027,6 +4027,7 @@ struct rtl_opt_pass pass_rtl_pre =
{
RTL_PASS,
"rtl pre", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_rtl_pre, /* gate */
execute_rtl_pre, /* execute */
NULL, /* sub */
@ -4047,6 +4048,7 @@ struct rtl_opt_pass pass_rtl_hoist =
{
RTL_PASS,
"hoist", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_rtl_hoist, /* gate */
execute_rtl_hoist, /* execute */
NULL, /* sub */

View File

@ -194,6 +194,7 @@ struct gimple_opt_pass pass_lower_cf =
{
GIMPLE_PASS,
"lower", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
lower_function_body, /* execute */
NULL, /* sub */

View File

@ -2682,6 +2682,7 @@ struct gimple_opt_pass pass_strength_reduction =
{
GIMPLE_PASS,
"slsr", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_strength_reduction, /* gate */
execute_strength_reduction, /* execute */
NULL, /* sub */

View File

@ -4462,6 +4462,7 @@ struct rtl_opt_pass pass_rtl_ifcvt =
{
RTL_PASS,
"ce1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_if_conversion, /* gate */
rest_of_handle_if_conversion, /* execute */
NULL, /* sub */
@ -4499,6 +4500,7 @@ struct rtl_opt_pass pass_if_after_combine =
{
RTL_PASS,
"ce2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_if_after_combine, /* gate */
rest_of_handle_if_after_combine, /* execute */
NULL, /* sub */
@ -4535,6 +4537,7 @@ struct rtl_opt_pass pass_if_after_reload =
{
RTL_PASS,
"ce3", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_if_after_reload, /* gate */
rest_of_handle_if_after_reload, /* execute */
NULL, /* sub */

View File

@ -143,6 +143,7 @@ struct rtl_opt_pass pass_initialize_regs =
{
RTL_PASS,
"init-regs", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_initialize_regs, /* gate */
rest_of_handle_initialize_regs, /* execute */
NULL, /* sub */

View File

@ -2543,6 +2543,7 @@ struct ipa_opt_pass_d pass_ipa_cp =
{
IPA_PASS,
"cp", /* name */
OPTGROUP_NONE, /* optinfo_flags */
cgraph_gate_cp, /* gate */
ipcp_driver, /* execute */
NULL, /* sub */

View File

@ -2655,6 +2655,7 @@ struct gimple_opt_pass pass_inline_parameters =
{
GIMPLE_PASS,
"inline_param", /* name */
OPTGROUP_INLINE, /* optinfo_flags */
NULL, /* gate */
compute_inline_parameters_for_current,/* execute */
NULL, /* sub */

View File

@ -2019,6 +2019,7 @@ struct gimple_opt_pass pass_early_inline =
{
GIMPLE_PASS,
"einline", /* name */
OPTGROUP_INLINE, /* optinfo_flags */
NULL, /* gate */
early_inliner, /* execute */
NULL, /* sub */
@ -2051,6 +2052,7 @@ struct ipa_opt_pass_d pass_ipa_inline =
{
IPA_PASS,
"inline", /* name */
OPTGROUP_INLINE, /* optinfo_flags */
gate_ipa_inline, /* gate */
ipa_inline, /* execute */
NULL, /* sub */

View File

@ -1497,6 +1497,7 @@ struct ipa_opt_pass_d pass_ipa_pure_const =
{
IPA_PASS,
"pure-const", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_pure_const, /* gate */
propagate, /* execute */
NULL, /* sub */
@ -1662,6 +1663,7 @@ struct gimple_opt_pass pass_local_pure_const =
{
GIMPLE_PASS,
"local-pure-const", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_pure_const, /* gate */
local_pure_const, /* execute */
NULL, /* sub */

View File

@ -1181,6 +1181,7 @@ struct ipa_opt_pass_d pass_ipa_reference =
{
IPA_PASS,
"static-var", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_reference, /* gate */
propagate, /* execute */
NULL, /* sub */

View File

@ -1601,6 +1601,7 @@ struct gimple_opt_pass pass_split_functions =
{
GIMPLE_PASS,
"fnsplit", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_split_functions, /* gate */
execute_split_functions, /* execute */
NULL, /* sub */
@ -1642,6 +1643,7 @@ struct gimple_opt_pass pass_feedback_split_functions =
{
GIMPLE_PASS,
"feedback_fnsplit", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_feedback_split_functions, /* gate */
execute_feedback_split_functions, /* execute */
NULL, /* sub */

View File

@ -948,6 +948,7 @@ struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility =
{
SIMPLE_IPA_PASS,
"visibility", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
local_function_and_variable_visibility,/* execute */
NULL, /* sub */
@ -977,6 +978,7 @@ struct simple_ipa_opt_pass pass_ipa_free_inline_summary =
{
SIMPLE_IPA_PASS,
"*free_inline_summary", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
free_inline_summary, /* execute */
NULL, /* sub */
@ -1015,6 +1017,7 @@ struct ipa_opt_pass_d pass_ipa_whole_program_visibility =
{
IPA_PASS,
"whole-program", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_whole_program_function_and_variable_visibility,/* gate */
whole_program_function_and_variable_visibility,/* execute */
NULL, /* sub */
@ -1098,6 +1101,7 @@ struct ipa_opt_pass_d pass_ipa_profile =
{
IPA_PASS,
"profile_estimate", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_ipa_profile, /* gate */
ipa_profile, /* execute */
NULL, /* sub */
@ -1408,6 +1412,7 @@ struct ipa_opt_pass_d pass_ipa_cdtor_merge =
{
IPA_PASS,
"cdtor", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_ipa_cdtor_merge, /* gate */
ipa_cdtor_merge, /* execute */
NULL, /* sub */

View File

@ -4716,6 +4716,7 @@ struct rtl_opt_pass pass_ira =
{
RTL_PASS,
"ira", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_ira, /* execute */
NULL, /* sub */
@ -4742,6 +4743,7 @@ struct rtl_opt_pass pass_reload =
{
RTL_PASS,
"reload", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_reload, /* execute */
NULL, /* sub */

View File

@ -146,6 +146,7 @@ struct rtl_opt_pass pass_cleanup_barriers =
{
RTL_PASS,
"barriers", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
cleanup_barriers, /* execute */
NULL, /* sub */

View File

@ -189,6 +189,7 @@ struct rtl_opt_pass pass_loop2 =
{
RTL_PASS,
"loop2", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_handle_loop2, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -225,6 +226,7 @@ struct rtl_opt_pass pass_rtl_loop_init =
{
RTL_PASS,
"loop2_init", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
NULL, /* gate */
rtl_loop_init, /* execute */
NULL, /* sub */
@ -265,6 +267,7 @@ struct rtl_opt_pass pass_rtl_loop_done =
{
RTL_PASS,
"loop2_done", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
NULL, /* gate */
rtl_loop_done, /* execute */
NULL, /* sub */
@ -301,6 +304,7 @@ struct rtl_opt_pass pass_rtl_move_loop_invariants =
{
RTL_PASS,
"loop2_invariant", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_rtl_move_loop_invariants, /* gate */
rtl_move_loop_invariants, /* execute */
NULL, /* sub */
@ -337,6 +341,7 @@ struct rtl_opt_pass pass_rtl_unswitch =
{
RTL_PASS,
"loop2_unswitch", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_rtl_unswitch, /* gate */
rtl_unswitch, /* execute */
NULL, /* sub */
@ -385,6 +390,7 @@ struct rtl_opt_pass pass_rtl_unroll_and_peel_loops =
{
RTL_PASS,
"loop2_unroll", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_rtl_unroll_and_peel_loops, /* gate */
rtl_unroll_and_peel_loops, /* execute */
NULL, /* sub */
@ -426,6 +432,7 @@ struct rtl_opt_pass pass_rtl_doloop =
{
RTL_PASS,
"loop2_doloop", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_rtl_doloop, /* gate */
rtl_doloop, /* execute */
NULL, /* sub */

View File

@ -1665,6 +1665,7 @@ struct rtl_opt_pass pass_lower_subreg =
{
RTL_PASS,
"subreg1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_lower_subreg, /* gate */
rest_of_handle_lower_subreg, /* execute */
NULL, /* sub */
@ -1685,6 +1686,7 @@ struct rtl_opt_pass pass_lower_subreg2 =
{
RTL_PASS,
"subreg2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_lower_subreg, /* gate */
rest_of_handle_lower_subreg2, /* execute */
NULL, /* sub */

View File

@ -1009,6 +1009,7 @@ struct ipa_opt_pass_d pass_ipa_lto_gimple_out =
{
IPA_PASS,
"lto_gimple_out", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_lto_out, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -1424,6 +1425,7 @@ struct ipa_opt_pass_d pass_ipa_lto_finish_out =
{
IPA_PASS,
"lto_decls_out", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_lto_out, /* gate */
NULL, /* execute */
NULL, /* sub */

View File

@ -763,6 +763,7 @@ struct rtl_opt_pass pass_mode_switching =
{
RTL_PASS,
"mode_sw", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_mode_switching, /* gate */
rest_of_handle_mode_switching, /* execute */
NULL, /* sub */

View File

@ -3364,6 +3364,7 @@ struct rtl_opt_pass pass_sms =
{
RTL_PASS,
"sms", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_sms, /* gate */
rest_of_handle_sms, /* execute */
NULL, /* sub */

View File

@ -5753,6 +5753,7 @@ struct gimple_opt_pass pass_expand_omp =
{
GIMPLE_PASS,
"ompexp", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_expand_omp, /* gate */
execute_expand_omp, /* execute */
NULL, /* sub */
@ -6927,6 +6928,7 @@ struct gimple_opt_pass pass_lower_omp =
{
GIMPLE_PASS,
"omplower", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_lower_omp, /* execute */
NULL, /* sub */
@ -7190,6 +7192,7 @@ struct gimple_opt_pass pass_diagnose_omp_blocks =
{
GIMPLE_PASS,
"*diagnose_omp_blocks", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_diagnose_omp_blocks, /* gate */
diagnose_omp_structured_block_errors, /* execute */
NULL, /* sub */

View File

@ -240,7 +240,7 @@ read_cmdline_options (struct gcc_options *opts, struct gcc_options *opts_set,
REPORT_VECTORIZED_LOCATIONS ==> "-optimized"
REPORT_UNVECTORIZED_LOCATIONS ==> "-missed"
Any higher verbosity levels get mapped to "-optall" flags. */
Any higher verbosity levels get mapped to "-all" flags. */
static void
dump_remap_tree_vectorizer_verbose (const char *arg)
@ -259,7 +259,7 @@ dump_remap_tree_vectorizer_verbose (const char *arg)
remapped_opt_info = "missed";
break;
default:
remapped_opt_info = "optall";
remapped_opt_info = "all";
break;
}
@ -390,7 +390,7 @@ handle_common_deferred_options (void)
case OPT_fopt_info_:
if (!opt_info_switch_p (opt->arg))
error ("unrecognized command line option %<-fopt-info%s%>",
error ("unrecognized command line option %<-fopt-info-%s%>",
opt->arg);
break;

View File

@ -103,7 +103,6 @@ debug_pass (void)
/* Global variables used to communicate with passes. */
int dump_flags;
bool in_gimple_form;
bool first_pass_instance;
@ -285,6 +284,7 @@ struct simple_ipa_opt_pass pass_early_local_passes =
{
SIMPLE_IPA_PASS,
"early_local_cleanups", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_all_early_local_passes, /* gate */
execute_all_early_local_passes, /* execute */
NULL, /* sub */
@ -314,6 +314,7 @@ static struct gimple_opt_pass pass_all_early_optimizations =
{
GIMPLE_PASS,
"early_optimizations", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_all_early_optimizations, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -341,6 +342,7 @@ static struct gimple_opt_pass pass_all_optimizations =
{
GIMPLE_PASS,
"*all_optimizations", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_all_optimizations, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -368,6 +370,7 @@ static struct gimple_opt_pass pass_all_optimizations_g =
{
GIMPLE_PASS,
"*all_optimizations_g", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_all_optimizations_g, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -395,6 +398,7 @@ static struct rtl_opt_pass pass_rest_of_compilation =
{
RTL_PASS,
"*rest_of_compilation", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_rest_of_compilation, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -420,6 +424,7 @@ static struct rtl_opt_pass pass_postreload =
{
RTL_PASS,
"*all-postreload", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_postreload, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -487,6 +492,7 @@ register_one_dump_file (struct opt_pass *pass)
const char *name, *full_name, *prefix;
char num[10];
int flags, id;
int optgroup_flags = OPTGROUP_NONE;
/* See below in next_pass_1. */
num[0] = '\0';
@ -503,15 +509,26 @@ register_one_dump_file (struct opt_pass *pass)
name = name ? name + 1 : pass->name;
dot_name = concat (".", name, num, NULL);
if (pass->type == SIMPLE_IPA_PASS || pass->type == IPA_PASS)
prefix = "ipa-", flags = TDF_IPA;
{
prefix = "ipa-";
flags = TDF_IPA;
optgroup_flags |= OPTGROUP_IPA;
}
else if (pass->type == GIMPLE_PASS)
prefix = "tree-", flags = TDF_TREE;
{
prefix = "tree-";
flags = TDF_TREE;
}
else
prefix = "rtl-", flags = TDF_RTL;
{
prefix = "rtl-";
flags = TDF_RTL;
}
flag_name = concat (prefix, name, num, NULL);
glob_name = concat (prefix, name, NULL);
id = dump_register (dot_name, flag_name, glob_name, flags);
optgroup_flags |= pass->optinfo_flags;
id = dump_register (dot_name, flag_name, glob_name, flags, optgroup_flags);
set_pass_for_id (id, pass);
full_name = concat (prefix, pass->name, num, NULL);
register_pass_name (pass, full_name);

View File

@ -1328,6 +1328,7 @@ struct rtl_opt_pass pass_gcse2 =
{
RTL_PASS,
"gcse2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_gcse2, /* gate */
rest_of_handle_gcse2, /* execute */
NULL, /* sub */

View File

@ -2289,6 +2289,7 @@ struct rtl_opt_pass pass_postreload_cse =
{
RTL_PASS,
"postreload", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_postreload, /* gate */
rest_of_handle_postreload, /* execute */
NULL, /* sub */

View File

@ -2823,6 +2823,7 @@ struct gimple_opt_pass pass_profile =
{
GIMPLE_PASS,
"profile_estimate", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_estimate_probability, /* gate */
tree_estimate_probability_driver, /* execute */
NULL, /* sub */
@ -2842,6 +2843,7 @@ struct gimple_opt_pass pass_strip_predict_hints =
{
GIMPLE_PASS,
"*strip_predict_hints", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
strip_predict_hints, /* execute */
NULL, /* sub */

View File

@ -3742,6 +3742,7 @@ struct rtl_opt_pass pass_peephole2 =
{
RTL_PASS,
"peephole2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_peephole2, /* gate */
rest_of_handle_peephole2, /* execute */
NULL, /* sub */
@ -3769,6 +3770,7 @@ struct rtl_opt_pass pass_split_all_insns =
{
RTL_PASS,
"split1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_split_all_insns, /* execute */
NULL, /* sub */
@ -3799,6 +3801,7 @@ struct rtl_opt_pass pass_split_after_reload =
{
RTL_PASS,
"split2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_split_after_reload, /* execute */
NULL, /* sub */
@ -3843,6 +3846,7 @@ struct rtl_opt_pass pass_split_before_regstack =
{
RTL_PASS,
"split3", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_split_before_regstack, /* gate */
rest_of_handle_split_before_regstack, /* execute */
NULL, /* sub */
@ -3881,6 +3885,7 @@ struct rtl_opt_pass pass_split_before_sched2 =
{
RTL_PASS,
"split4", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_split_before_sched2, /* gate */
rest_of_handle_split_before_sched2, /* execute */
NULL, /* sub */
@ -3912,6 +3917,7 @@ struct rtl_opt_pass pass_split_for_shorten_branches =
{
RTL_PASS,
"split5", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_do_final_split, /* gate */
split_all_insns_noflow, /* execute */
NULL, /* sub */

View File

@ -949,6 +949,7 @@ struct rtl_opt_pass pass_ree =
{
RTL_PASS,
"ree", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_ree, /* gate */
rest_of_handle_ree, /* execute */
NULL, /* sub */

View File

@ -3305,6 +3305,7 @@ struct rtl_opt_pass pass_stack_regs =
{
RTL_PASS,
"*stack_regs", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_stack_regs, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -3336,6 +3337,7 @@ struct rtl_opt_pass pass_stack_regs_run =
{
RTL_PASS,
"stack", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_stack_regs, /* execute */
NULL, /* sub */

View File

@ -1235,6 +1235,7 @@ struct rtl_opt_pass pass_cprop_hardreg =
{
RTL_PASS,
"cprop_hardreg", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_cprop, /* gate */
copyprop_hardreg_forward, /* execute */
NULL, /* sub */

View File

@ -972,6 +972,7 @@ struct rtl_opt_pass pass_reginfo_init =
{
RTL_PASS,
"reginfo", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
reginfo_init, /* execute */
NULL, /* sub */

View File

@ -1369,6 +1369,7 @@ struct rtl_opt_pass pass_regmove =
{
RTL_PASS,
"regmove", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_regmove, /* gate */
regmove_optimize, /* execute */
NULL, /* sub */

View File

@ -1842,6 +1842,7 @@ struct rtl_opt_pass pass_regrename =
{
RTL_PASS,
"rnreg", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_regrename, /* gate */
regrename_optimize, /* execute */
NULL, /* sub */

View File

@ -4122,6 +4122,7 @@ struct rtl_opt_pass pass_delay_slots =
{
RTL_PASS,
"dbr", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_delay_slots, /* gate */
rest_of_handle_delay_slots, /* execute */
NULL, /* sub */
@ -4156,6 +4157,7 @@ struct rtl_opt_pass pass_machine_reorg =
{
RTL_PASS,
"mach", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_machine_reorg, /* gate */
rest_of_handle_machine_reorg, /* execute */
NULL, /* sub */

View File

@ -3575,6 +3575,7 @@ struct rtl_opt_pass pass_sched =
{
RTL_PASS,
"sched1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_sched, /* gate */
rest_of_handle_sched, /* execute */
NULL, /* sub */
@ -3596,6 +3597,7 @@ struct rtl_opt_pass pass_sched2 =
{
RTL_PASS,
"sched2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_handle_sched2, /* gate */
rest_of_handle_sched2, /* execute */
NULL, /* sub */

View File

@ -96,6 +96,7 @@ struct rtl_opt_pass pass_stack_ptr_mod =
{
RTL_PASS,
"*stack_ptr_mod", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rest_of_handle_stack_ptr_mod, /* execute */
NULL, /* sub */

View File

@ -246,7 +246,7 @@ void
statistics_early_init (void)
{
statistics_dump_nr = dump_register (".statistics", "statistics",
"statistics", TDF_TREE);
"statistics", TDF_TREE, OPTGROUP_NONE);
}
/* Init the statistics. */

View File

@ -1238,6 +1238,7 @@ struct rtl_opt_pass pass_rtl_store_motion =
{
RTL_PASS,
"store_motion", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_rtl_store_motion, /* gate */
execute_rtl_store_motion, /* execute */
NULL, /* sub */

View File

@ -1,3 +1,10 @@
2012-11-01 Sharad Singhai <singhai@google.com>
* testsuite/gcc.dg/plugin/selfassign.c: Add opgtroup_flags initializer.
* testsuite/gcc.dg/plugin/one_time_plugin.c: Likewise.
* testsuite/g++.dg/plugin/selfassign.c: Likewise.
* testsuite/g++.dg/plugin/dumb_plugin.c: Likewise.
2012-10-31 Dehao Chen <dehao@google.com>
* g++.dg/debug/dwarf2/block.C: New testcase.

View File

@ -62,6 +62,7 @@ static struct gimple_opt_pass pass_dumb_plugin_example =
{
GIMPLE_PASS,
"dumb_plugin_example", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dumb_plugin_example, /* gate */
execute_dumb_plugin_example, /* execute */
NULL, /* sub */

View File

@ -268,6 +268,7 @@ static struct gimple_opt_pass pass_warn_self_assign =
{
GIMPLE_PASS,
"warn_self_assign", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_warn_self_assign, /* gate */
execute_warn_self_assign, /* execute */
NULL, /* sub */

View File

@ -32,6 +32,7 @@ struct gimple_opt_pass one_pass =
{
GIMPLE_PASS,
"cfg", /* name */
OPTGROUP_NONE, /* optinfo_flags */
one_pass_gate, /* gate */
one_pass_exec, /* execute */
NULL, /* sub */

View File

@ -268,6 +268,7 @@ static struct gimple_opt_pass pass_warn_self_assign =
{
GIMPLE_PASS,
"warn_self_assign", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_warn_self_assign, /* gate */
execute_warn_self_assign, /* execute */
NULL, /* sub */

View File

@ -403,6 +403,7 @@ struct gimple_opt_pass pass_tracer =
{
GIMPLE_PASS,
"tracer", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tracer, /* gate */
tracer, /* execute */
NULL, /* sub */

View File

@ -798,6 +798,7 @@ struct gimple_opt_pass pass_diagnose_tm_blocks =
{
GIMPLE_PASS,
"*diagnose_tm_blocks", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tm, /* gate */
diagnose_tm_blocks, /* execute */
NULL, /* sub */
@ -1738,6 +1739,7 @@ struct gimple_opt_pass pass_lower_tm =
{
GIMPLE_PASS,
"tmlower", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tm, /* gate */
execute_lower_tm, /* execute */
NULL, /* sub */
@ -1985,6 +1987,7 @@ struct gimple_opt_pass pass_tm_init =
{
GIMPLE_PASS,
"*tminit", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tm_init, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -2571,6 +2574,7 @@ struct gimple_opt_pass pass_tm_mark =
{
GIMPLE_PASS,
"tmmark", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_tm_mark, /* execute */
NULL, /* sub */
@ -2848,6 +2852,7 @@ struct gimple_opt_pass pass_tm_edges =
{
GIMPLE_PASS,
"tmedge", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_tm_edges, /* execute */
NULL, /* sub */
@ -3513,6 +3518,7 @@ struct gimple_opt_pass pass_tm_memopt =
{
GIMPLE_PASS,
"tmmemopt", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tm_memopt, /* gate */
execute_tm_memopt, /* execute */
NULL, /* sub */
@ -5067,6 +5073,7 @@ struct simple_ipa_opt_pass pass_ipa_tm =
{
SIMPLE_IPA_PASS,
"tmipa", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tm, /* gate */
ipa_tm_execute, /* execute */
NULL, /* sub */

View File

@ -920,6 +920,7 @@ struct gimple_opt_pass pass_call_cdce =
{
GIMPLE_PASS,
"cdce", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_call_cdce, /* gate */
tree_call_cdce, /* execute */
NULL, /* sub */

View File

@ -247,6 +247,7 @@ struct gimple_opt_pass pass_build_cfg =
{
GIMPLE_PASS,
"cfg", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_build_cfg, /* execute */
NULL, /* sub */
@ -7705,6 +7706,7 @@ struct gimple_opt_pass pass_split_crit_edges =
{
GIMPLE_PASS,
"crited", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
split_critical_edges, /* execute */
NULL, /* sub */
@ -7858,6 +7860,7 @@ struct gimple_opt_pass pass_warn_function_return =
{
GIMPLE_PASS,
"*warn_function_return", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_warn_function_return, /* execute */
NULL, /* sub */
@ -7894,6 +7897,7 @@ struct gimple_opt_pass pass_warn_function_noreturn =
{
GIMPLE_PASS,
"*warn_function_noreturn", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_warn_function_noreturn, /* gate */
execute_warn_function_noreturn, /* execute */
NULL, /* sub */
@ -7992,6 +7996,7 @@ struct gimple_opt_pass pass_warn_unused_result =
{
GIMPLE_PASS,
"*warn_unused_result", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_warn_unused_result, /* gate */
run_warn_unused_result, /* execute */
NULL, /* sub */

View File

@ -977,6 +977,7 @@ struct gimple_opt_pass pass_merge_phi =
{
GIMPLE_PASS,
"mergephi", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_merge_phi, /* gate */
merge_phi_nodes, /* execute */
NULL, /* sub */

View File

@ -1608,6 +1608,7 @@ struct gimple_opt_pass pass_lower_complex =
{
GIMPLE_PASS,
"cplxlower", /* name */
OPTGROUP_NONE, /* optinfo_flags */
0, /* gate */
tree_lower_complex, /* execute */
NULL, /* sub */
@ -1638,6 +1639,7 @@ struct gimple_opt_pass pass_lower_complex_O0 =
{
GIMPLE_PASS,
"cplxlower0", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_no_optimization, /* gate */
tree_lower_complex, /* execute */
NULL, /* sub */

View File

@ -2140,6 +2140,7 @@ struct gimple_opt_pass pass_lower_eh =
{
GIMPLE_PASS,
"eh", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
lower_eh_constructs, /* execute */
NULL, /* sub */
@ -2999,6 +3000,7 @@ struct gimple_opt_pass pass_refactor_eh =
{
GIMPLE_PASS,
"ehopt", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_refactor_eh, /* gate */
refactor_eh, /* execute */
NULL, /* sub */
@ -3207,6 +3209,7 @@ struct gimple_opt_pass pass_lower_resx =
{
GIMPLE_PASS,
"resx", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_lower_resx, /* gate */
execute_lower_resx, /* execute */
NULL, /* sub */
@ -3503,6 +3506,7 @@ struct gimple_opt_pass pass_lower_eh_dispatch =
{
GIMPLE_PASS,
"ehdisp", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_lower_eh_dispatch, /* gate */
execute_lower_eh_dispatch, /* execute */
NULL, /* sub */
@ -4326,6 +4330,7 @@ struct gimple_opt_pass pass_cleanup_eh = {
{
GIMPLE_PASS,
"ehcleanup", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_cleanup_eh, /* gate */
execute_cleanup_eh, /* execute */
NULL, /* sub */

View File

@ -815,6 +815,7 @@ struct simple_ipa_opt_pass pass_ipa_lower_emutls =
{
SIMPLE_IPA_PASS,
"emutls", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_emutls, /* gate */
ipa_lower_emutls, /* execute */
NULL, /* sub */

View File

@ -1859,6 +1859,7 @@ struct gimple_opt_pass pass_if_conversion =
{
GIMPLE_PASS,
"ifcvt", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tree_if_conversion, /* gate */
main_tree_if_conversion, /* execute */
NULL, /* sub */

View File

@ -2404,6 +2404,7 @@ struct gimple_opt_pass pass_build_ssa =
{
GIMPLE_PASS,
"ssa", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
rewrite_into_ssa, /* execute */
NULL, /* sub */

View File

@ -1578,6 +1578,7 @@ struct gimple_opt_pass pass_loop_distribution =
{
GIMPLE_PASS,
"ldist", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_loop_distribution, /* gate */
tree_loop_distribution, /* execute */
NULL, /* sub */

View File

@ -1368,6 +1368,7 @@ struct gimple_opt_pass pass_mudflap_1 =
{
GIMPLE_PASS,
"mudflap1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_mudflap, /* gate */
execute_mudflap_function_decls, /* execute */
NULL, /* sub */
@ -1387,6 +1388,7 @@ struct gimple_opt_pass pass_mudflap_2 =
{
GIMPLE_PASS,
"mudflap2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_mudflap, /* gate */
execute_mudflap_function_ops, /* execute */
NULL, /* sub */

View File

@ -91,6 +91,7 @@ struct gimple_opt_pass pass_mudflap_1 =
{
GIMPLE_PASS,
"mudflap1", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_mudflap, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -110,6 +111,7 @@ struct gimple_opt_pass pass_mudflap_2 =
{
GIMPLE_PASS,
"mudflap2", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_mudflap, /* gate */
NULL, /* execute */
NULL, /* sub */

View File

@ -275,6 +275,7 @@ struct gimple_opt_pass pass_nrv =
{
GIMPLE_PASS,
"nrv", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_pass_return_slot, /* gate */
tree_nrv, /* execute */
NULL, /* sub */
@ -360,6 +361,7 @@ struct gimple_opt_pass pass_return_slot =
{
GIMPLE_PASS,
"retslot", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_return_slot_opt, /* execute */
NULL, /* sub */

View File

@ -1268,6 +1268,7 @@ struct gimple_opt_pass pass_object_sizes =
{
GIMPLE_PASS,
"objsz", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
compute_object_sizes, /* execute */
NULL, /* sub */

View File

@ -95,6 +95,7 @@ struct gimple_opt_pass pass_cleanup_cfg_post_optimizing =
{
GIMPLE_PASS,
"optimized", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_cleanup_cfg_post_optimizing, /* execute */
NULL, /* sub */
@ -222,6 +223,7 @@ struct gimple_opt_pass pass_fixup_cfg =
{
GIMPLE_PASS,
"*free_cfg_annotations", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_fixup_cfg, /* execute */
NULL, /* sub */

View File

@ -46,6 +46,9 @@ struct opt_pass
name. If the name starts with a star, no dump happens. */
const char *name;
/* The -fopt-info optimization group flags as defined in dumpfile.h. */
unsigned int optinfo_flags;
/* If non-null, this pass and all sub-passes are executed only if
the function returns true. */
bool (*gate) (void);

View File

@ -568,6 +568,7 @@ struct simple_ipa_opt_pass pass_ipa_tree_profile =
{
SIMPLE_IPA_PASS,
"profile", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_tree_profile_ipa, /* gate */
tree_profiling, /* execute */
NULL, /* sub */

View File

@ -3443,6 +3443,7 @@ struct gimple_opt_pass pass_sra_early =
{
GIMPLE_PASS,
"esra", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_intra_sra, /* gate */
early_intra_sra, /* execute */
NULL, /* sub */
@ -3464,6 +3465,7 @@ struct gimple_opt_pass pass_sra =
{
GIMPLE_PASS,
"sra", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_intra_sra, /* gate */
late_intra_sra, /* execute */
NULL, /* sub */
@ -5006,6 +5008,7 @@ struct gimple_opt_pass pass_early_ipa_sra =
{
GIMPLE_PASS,
"eipa_sra", /* name */
OPTGROUP_NONE, /* optinfo_flags */
ipa_early_sra_gate, /* gate */
ipa_early_sra, /* execute */
NULL, /* sub */

View File

@ -2123,6 +2123,7 @@ struct gimple_opt_pass pass_ccp =
{
GIMPLE_PASS,
"ccp", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_ccp, /* gate */
do_ssa_ccp, /* execute */
NULL, /* sub */
@ -2507,6 +2508,7 @@ struct gimple_opt_pass pass_fold_builtins =
{
GIMPLE_PASS,
"fab", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
execute_fold_all_builtins, /* execute */
NULL, /* sub */

View File

@ -828,6 +828,7 @@ struct gimple_opt_pass pass_copy_prop =
{
GIMPLE_PASS,
"copyprop", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_copy_prop, /* gate */
execute_copy_prop, /* execute */
NULL, /* sub */

View File

@ -443,6 +443,7 @@ struct gimple_opt_pass pass_rename_ssa_copies =
{
GIMPLE_PASS,
"copyrename", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_copyrename, /* gate */
rename_ssa_copies, /* execute */
NULL, /* sub */

View File

@ -1651,6 +1651,7 @@ struct gimple_opt_pass pass_dce =
{
GIMPLE_PASS,
"dce", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dce, /* gate */
tree_ssa_dce, /* execute */
NULL, /* sub */
@ -1670,6 +1671,7 @@ struct gimple_opt_pass pass_dce_loop =
{
GIMPLE_PASS,
"dceloop", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dce, /* gate */
tree_ssa_dce_loop, /* execute */
NULL, /* sub */
@ -1689,6 +1691,7 @@ struct gimple_opt_pass pass_cd_dce =
{
GIMPLE_PASS,
"cddce", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dce, /* gate */
tree_ssa_cd_dce, /* execute */
NULL, /* sub */

View File

@ -861,6 +861,7 @@ struct gimple_opt_pass pass_dominator =
{
GIMPLE_PASS,
"dom", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dominator, /* gate */
tree_ssa_dominator_optimize, /* execute */
NULL, /* sub */
@ -3033,6 +3034,7 @@ struct gimple_opt_pass pass_phi_only_cprop =
{
GIMPLE_PASS,
"phicprop", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dominator, /* gate */
eliminate_degenerate_phis, /* execute */
NULL, /* sub */

View File

@ -356,6 +356,7 @@ struct gimple_opt_pass pass_dse =
{
GIMPLE_PASS,
"dse", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_dse, /* gate */
tree_ssa_dse, /* execute */
NULL, /* sub */

View File

@ -3122,6 +3122,7 @@ struct gimple_opt_pass pass_forwprop =
{
GIMPLE_PASS,
"forwprop", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_forwprop, /* gate */
ssa_forward_propagate_and_combine, /* execute */
NULL, /* sub */

View File

@ -653,6 +653,7 @@ struct gimple_opt_pass pass_tree_ifcombine =
{
GIMPLE_PASS,
"ifcombine", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_ifcombine, /* gate */
tree_ssa_ifcombine, /* execute */
NULL, /* sub */

View File

@ -260,6 +260,7 @@ struct gimple_opt_pass pass_ch =
{
GIMPLE_PASS,
"ch", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_ch, /* gate */
copy_loop_headers, /* execute */
NULL, /* sub */

View File

@ -47,6 +47,7 @@ struct gimple_opt_pass pass_tree_loop =
{
GIMPLE_PASS,
"loop", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_loop, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -82,6 +83,7 @@ struct gimple_opt_pass pass_tree_loop_init =
{
GIMPLE_PASS,
"loopinit", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
NULL, /* gate */
tree_ssa_loop_init, /* execute */
NULL, /* sub */
@ -118,6 +120,7 @@ struct gimple_opt_pass pass_lim =
{
GIMPLE_PASS,
"lim", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_ssa_loop_im, /* gate */
tree_ssa_loop_im, /* execute */
NULL, /* sub */
@ -154,6 +157,7 @@ struct gimple_opt_pass pass_tree_unswitch =
{
GIMPLE_PASS,
"unswitch", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_ssa_loop_unswitch, /* gate */
tree_ssa_loop_unswitch, /* execute */
NULL, /* sub */
@ -190,6 +194,7 @@ struct gimple_opt_pass pass_predcom =
{
GIMPLE_PASS,
"pcom", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_predictive_commoning, /* gate */
run_tree_predictive_commoning, /* execute */
NULL, /* sub */
@ -226,6 +231,8 @@ struct gimple_opt_pass pass_vectorize =
{
GIMPLE_PASS,
"vect", /* name */
OPTGROUP_LOOP
| OPTGROUP_VEC, /* optinfo_flags */
gate_tree_vectorize, /* gate */
tree_vectorize, /* execute */
NULL, /* sub */
@ -275,6 +282,7 @@ struct gimple_opt_pass pass_graphite =
{
GIMPLE_PASS,
"graphite0", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_graphite_transforms, /* gate */
NULL, /* execute */
NULL, /* sub */
@ -294,6 +302,7 @@ struct gimple_opt_pass pass_graphite_transforms =
{
GIMPLE_PASS,
"graphite", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_graphite_transforms, /* gate */
graphite_transforms, /* execute */
NULL, /* sub */
@ -331,6 +340,7 @@ struct gimple_opt_pass pass_check_data_deps =
{
GIMPLE_PASS,
"ckdd", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_check_data_deps, /* gate */
check_data_deps, /* execute */
NULL, /* sub */
@ -367,6 +377,7 @@ struct gimple_opt_pass pass_iv_canon =
{
GIMPLE_PASS,
"ivcanon", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_ssa_loop_ivcanon, /* gate */
tree_ssa_loop_ivcanon, /* execute */
NULL, /* sub */
@ -394,6 +405,7 @@ struct gimple_opt_pass pass_scev_cprop =
{
GIMPLE_PASS,
"sccp", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_scev_const_prop, /* gate */
scev_const_prop, /* execute */
NULL, /* sub */
@ -428,6 +440,7 @@ struct gimple_opt_pass pass_record_bounds =
{
GIMPLE_PASS,
"*record_bounds", /* name */
OPTGROUP_NONE, /* optinfo_flags */
NULL, /* gate */
tree_ssa_loop_bounds, /* execute */
NULL, /* sub */
@ -466,6 +479,7 @@ struct gimple_opt_pass pass_complete_unroll =
{
GIMPLE_PASS,
"cunroll", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_complete_unroll, /* gate */
tree_complete_unroll, /* execute */
NULL, /* sub */
@ -512,6 +526,7 @@ struct gimple_opt_pass pass_complete_unrolli =
{
GIMPLE_PASS,
"cunrolli", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_complete_unroll_inner, /* gate */
tree_complete_unroll_inner, /* execute */
NULL, /* sub */
@ -551,6 +566,7 @@ struct gimple_opt_pass pass_parallelize_loops =
{
GIMPLE_PASS,
"parloops", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_parallelize_loops, /* gate */
tree_parallelize_loops, /* execute */
NULL, /* sub */
@ -587,6 +603,7 @@ struct gimple_opt_pass pass_loop_prefetch =
{
GIMPLE_PASS,
"aprefetch", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_ssa_loop_prefetch, /* gate */
tree_ssa_loop_prefetch, /* execute */
NULL, /* sub */
@ -624,6 +641,7 @@ struct gimple_opt_pass pass_iv_optimize =
{
GIMPLE_PASS,
"ivopts", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
gate_tree_ssa_loop_ivopts, /* gate */
tree_ssa_loop_ivopts, /* execute */
NULL, /* sub */
@ -654,6 +672,7 @@ struct gimple_opt_pass pass_tree_loop_done =
{
GIMPLE_PASS,
"loopdone", /* name */
OPTGROUP_LOOP, /* optinfo_flags */
NULL, /* gate */
tree_ssa_loop_done, /* execute */
NULL, /* sub */

View File

@ -642,6 +642,7 @@ struct gimple_opt_pass pass_cse_reciprocals =
{
GIMPLE_PASS,
"recip", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_cse_reciprocals, /* gate */
execute_cse_reciprocals, /* execute */
NULL, /* sub */
@ -1505,6 +1506,7 @@ struct gimple_opt_pass pass_cse_sincos =
{
GIMPLE_PASS,
"sincos", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_cse_sincos, /* gate */
execute_cse_sincos, /* execute */
NULL, /* sub */
@ -1977,6 +1979,7 @@ struct gimple_opt_pass pass_optimize_bswap =
{
GIMPLE_PASS,
"bswap", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_optimize_bswap, /* gate */
execute_optimize_bswap, /* execute */
NULL, /* sub */
@ -2741,6 +2744,7 @@ struct gimple_opt_pass pass_optimize_widening_mul =
{
GIMPLE_PASS,
"widening_mul", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_optimize_widening_mul, /* gate */
execute_optimize_widening_mul, /* execute */
NULL, /* sub */

View File

@ -1951,6 +1951,7 @@ struct gimple_opt_pass pass_phiopt =
{
GIMPLE_PASS,
"phiopt", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_phiopt, /* gate */
tree_ssa_phiopt, /* execute */
NULL, /* sub */
@ -1979,6 +1980,7 @@ struct gimple_opt_pass pass_cselim =
{
GIMPLE_PASS,
"cselim", /* name */
OPTGROUP_NONE, /* optinfo_flags */
gate_cselim, /* gate */
tree_ssa_cs_elim, /* execute */
NULL, /* sub */

Some files were not shown because too many files have changed in this diff Show More