This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH]: Add dump switch globbing
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: gcc-patches at gcc dot gnu dot org
- Cc: amacleod at redhat dot com, dnovillo at redhat dot com
- Date: Wed, 13 Oct 2004 12:25:34 -0400 (EDT)
- Subject: [PATCH]: Add dump switch globbing
Diego and Andrew were complaining on IRC that they can't just do
-fdump-tree-dce anymore and get all dce dumps, they have to use the
individual numbers, like -fdump-tree-dce1 -fdump-tree-dce2, etc.
This patch adds a glob name for passes, based off the pass name, that lets
you simply use -fdump-tree-dce and get the dump files for all the dce
passes, etc.
Bootstrapped and regtested on i686-pc-linux-gnu.
Okay for mainline?
2004-10-12 Daniel Berlin <dberlin@dberlin.org>
* tree-dump.c (dump_files): Update to reflect new member
of dump_file_info.
(dump_register): Add new argument.
Set glob name.
(dump_switch_p_1): Check against glob name as well.
* tree-optimize.c (register_one_dump_file):
Pass in glob name as well.
* tree-pass.h (struct dump_file_info): Add glob
member.
Index: tree-dump.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-dump.c,v
retrieving revision 1.35
diff -u -p -r1.35 tree-dump.c
--- tree-dump.c 23 Sep 2004 14:34:19 -0000 1.35
+++ tree-dump.c 13 Oct 2004 15:45:12 -0000
@@ -667,56 +667,56 @@ dump_node (tree t, int flags, FILE *stre
TREE_DUMP_INDEX enumeration in tree.h */
static struct dump_file_info dump_files[TDI_end] =
{
- {NULL, NULL, 0, 0, 0, 0},
- {".tu", "translation-unit", TDF_TREE, 0, 0, 0},
- {".class", "class-hierarchy", TDF_TREE, 0, 1, 0},
- {".original", "tree-original", TDF_TREE, 0, 2, 0},
- {".generic", "tree-generic", TDF_TREE, 0, 3, 0},
- {".nested", "tree-nested", TDF_TREE, 0, 4, 0},
- {".inlined", "tree-inlined", TDF_TREE, 0, 5, 0},
- {".vcg", "tree-vcg", TDF_TREE, 0, 6, 0},
- {NULL, "tree-all", TDF_TREE, 0, 0, 0},
- {NULL, "rtl-all", TDF_RTL, 0, 0, 0},
- {NULL, "ipa-all", TDF_IPA, 0, 0, 0},
-
- { ".cgraph", "ipa-cgraph", TDF_IPA, 0, 1, 0},
-
- { ".sibling", "rtl-sibling", TDF_RTL, 0, 1, 'i'},
- { ".eh", "rtl-eh", TDF_RTL, 0, 2, 'h'},
- { ".jump", "rtl-jump", TDF_RTL, 0, 3, 'j'},
- { ".cse", "rtl-cse", TDF_RTL, 0, 4, 's'},
- { ".gcse", "rtl-gcse", TDF_RTL, 0, 5, 'G'},
- { ".loop", "rtl-loop", TDF_RTL, 0, 6, 'L'},
- { ".bypass", "rtl-bypass", TDF_RTL, 0, 7, 'G'},
- { ".cfg", "rtl-cfg", TDF_RTL, 0, 8, 'f'},
- { ".bp", "rtl-bp", TDF_RTL, 0, 9, 'b'},
- { ".vpt", "rtl-vpt", TDF_RTL, 0, 10, 'V'},
- { ".ce1", "rtl-ce1", TDF_RTL, 0, 11, 'C'},
- { ".tracer", "rtl-tracer", TDF_RTL, 0, 12, 'T'},
- { ".loop2", "rtl-loop2", TDF_RTL, 0, 13, 'L'},
- { ".web", "rtl-web", TDF_RTL, 0, 14, 'Z'},
- { ".cse2", "rtl-cse2", TDF_RTL, 0, 15, 't'},
- { ".life", "rtl-life", TDF_RTL, 0, 16, 'f'},
- { ".combine", "rtl-combine", TDF_RTL, 0, 17, 'c'},
- { ".ce2", "rtl-ce2", TDF_RTL, 0, 18, 'C'},
- { ".regmove", "rtl-regmove", TDF_RTL, 0, 19, 'N'},
- { ".sms", "rtl-sms", TDF_RTL, 0, 20, 'm'},
- { ".sched", "rtl-sched", TDF_RTL, 0, 21, 'S'},
- { ".lreg", "rtl-lreg", TDF_RTL, 0, 22, 'l'},
- { ".greg", "rtl-greg", TDF_RTL, 0, 23, 'g'},
- { ".postreload", "rtl-postreload", TDF_RTL, 0, 24, 'o'},
- { ".gcse2", "rtl-gcse2", TDF_RTL, 0, 25, 'J'},
- { ".flow2", "rtl-flow2", TDF_RTL, 0, 26, 'w'},
- { ".peephole2", "rtl-peephole2", TDF_RTL, 0, 27, 'z'},
- { ".ce3", "rtl-ce3", TDF_RTL, 0, 28, 'E'},
- { ".rnreg", "rtl-rnreg", TDF_RTL, 0, 29, 'n'},
- { ".bbro", "rtl-bbro", TDF_RTL, 0, 30, 'B'},
- { ".btl", "rtl-btl", TDF_RTL, 0, 31, 'd'},
- { ".sched2", "rtl-sched2", TDF_RTL, 0, 32, 'R'},
- { ".stack", "rtl-stack", TDF_RTL, 0, 33, 'k'},
- { ".vartrack", "rtl-vartrack", TDF_RTL, 0, 34, 'V'},
- { ".mach", "rtl-mach", TDF_RTL, 0, 35, 'M'},
- { ".dbr", "rtl-dbr", TDF_RTL, 0, 36, 'd'}
+ {NULL, NULL, NULL, 0, 0, 0, 0},
+ {".tu", "translation-unit", NULL, TDF_TREE, 0, 0, 0},
+ {".class", "class-hierarchy", NULL, TDF_TREE, 0, 1, 0},
+ {".original", "tree-original", NULL, TDF_TREE, 0, 2, 0},
+ {".generic", "tree-generic", NULL, TDF_TREE, 0, 3, 0},
+ {".nested", "tree-nested", NULL, TDF_TREE, 0, 4, 0},
+ {".inlined", "tree-inlined", NULL, TDF_TREE, 0, 5, 0},
+ {".vcg", "tree-vcg", NULL, TDF_TREE, 0, 6, 0},
+ {NULL, "tree-all", NULL, TDF_TREE, 0, 0, 0},
+ {NULL, "rtl-all", NULL, TDF_RTL, 0, 0, 0},
+ {NULL, "ipa-all", NULL, TDF_IPA, 0, 0, 0},
+
+ { ".cgraph", "ipa-cgraph", NULL, TDF_IPA, 0, 1, 0},
+
+ { ".sibling", "rtl-sibling", NULL, TDF_RTL, 0, 1, 'i'},
+ { ".eh", "rtl-eh", NULL, TDF_RTL, 0, 2, 'h'},
+ { ".jump", "rtl-jump", NULL, TDF_RTL, 0, 3, 'j'},
+ { ".cse", "rtl-cse", NULL, TDF_RTL, 0, 4, 's'},
+ { ".gcse", "rtl-gcse", NULL, TDF_RTL, 0, 5, 'G'},
+ { ".loop", "rtl-loop", NULL, TDF_RTL, 0, 6, 'L'},
+ { ".bypass", "rtl-bypass", NULL, TDF_RTL, 0, 7, 'G'},
+ { ".cfg", "rtl-cfg", NULL, TDF_RTL, 0, 8, 'f'},
+ { ".bp", "rtl-bp", NULL, TDF_RTL, 0, 9, 'b'},
+ { ".vpt", "rtl-vpt", NULL, TDF_RTL, 0, 10, 'V'},
+ { ".ce1", "rtl-ce1", NULL, TDF_RTL, 0, 11, 'C'},
+ { ".tracer", "rtl-tracer", NULL, TDF_RTL, 0, 12, 'T'},
+ { ".loop2", "rtl-loop2", NULL, TDF_RTL, 0, 13, 'L'},
+ { ".web", "rtl-web", NULL, TDF_RTL, 0, 14, 'Z'},
+ { ".cse2", "rtl-cse2", NULL, TDF_RTL, 0, 15, 't'},
+ { ".life", "rtl-life", NULL, TDF_RTL, 0, 16, 'f'},
+ { ".combine", "rtl-combine", NULL, TDF_RTL, 0, 17, 'c'},
+ { ".ce2", "rtl-ce2", NULL, TDF_RTL, 0, 18, 'C'},
+ { ".regmove", "rtl-regmove", NULL, TDF_RTL, 0, 19, 'N'},
+ { ".sms", "rtl-sms", NULL, TDF_RTL, 0, 20, 'm'},
+ { ".sched", "rtl-sched", NULL, TDF_RTL, 0, 21, 'S'},
+ { ".lreg", "rtl-lreg", NULL, TDF_RTL, 0, 22, 'l'},
+ { ".greg", "rtl-greg", NULL, TDF_RTL, 0, 23, 'g'},
+ { ".postreload", "rtl-postreload", NULL, TDF_RTL, 0, 24, 'o'},
+ { ".gcse2", "rtl-gcse2", NULL, TDF_RTL, 0, 25, 'J'},
+ { ".flow2", "rtl-flow2", NULL, TDF_RTL, 0, 26, 'w'},
+ { ".peephole2", "rtl-peephole2", NULL, TDF_RTL, 0, 27, 'z'},
+ { ".ce3", "rtl-ce3", NULL, TDF_RTL, 0, 28, 'E'},
+ { ".rnreg", "rtl-rnreg", NULL, TDF_RTL, 0, 29, 'n'},
+ { ".bbro", "rtl-bbro", NULL, TDF_RTL, 0, 30, 'B'},
+ { ".btl", "rtl-btl", NULL, TDF_RTL, 0, 31, 'd'},
+ { ".sched2", "rtl-sched2", NULL, TDF_RTL, 0, 32, 'R'},
+ { ".stack", "rtl-stack", NULL, TDF_RTL, 0, 33, 'k'},
+ { ".vartrack", "rtl-vartrack", NULL, TDF_RTL, 0, 34, 'V'},
+ { ".mach", "rtl-mach", NULL, TDF_RTL, 0, 35, 'M'},
+ { ".dbr", "rtl-dbr", NULL, TDF_RTL, 0, 36, 'd'}
};
/* Dynamically registered tree dump files and switches. */
@@ -749,8 +749,8 @@ static const struct dump_option_value_in
};
unsigned int
-dump_register (const char *suffix, const char *swtch, int flags,
- unsigned int num, int letter)
+dump_register (const char *suffix, const char *swtch, const char *glob,
+ int flags, unsigned int num, int letter)
{
size_t this = extra_dump_files_in_use++;
@@ -768,6 +768,7 @@ dump_register (const char *suffix, const
memset (&extra_dump_files[this], 0, sizeof (struct dump_file_info));
extra_dump_files[this].suffix = suffix;
extra_dump_files[this].swtch = swtch;
+ extra_dump_files[this].glob = glob;
extra_dump_files[this].flags = flags;
extra_dump_files[this].num = num;
extra_dump_files[this].letter = letter;
@@ -932,7 +933,14 @@ dump_switch_p_1 (const char *arg, struct
option_value = skip_leading_substring (arg, dfi->swtch);
if (!option_value)
- return 0;
+ {
+ if (dfi->glob)
+ {
+ option_value = skip_leading_substring (arg, dfi->glob);
+ }
+ if (!option_value)
+ return 0;
+ }
ptr = option_value;
flags = 0;
Index: tree-dump.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-dump.h,v
retrieving revision 1.7
diff -u -p -r1.7 tree-dump.h
--- tree-dump.h 6 Sep 2004 10:08:00 -0000 1.7
+++ tree-dump.h 13 Oct 2004 15:45:12 -0000
@@ -88,6 +88,7 @@ extern void queue_and_dump_type (dump_in
extern void dump_function (enum tree_dump_index, tree);
extern void dump_function_to_file (tree, FILE *, int);
-extern unsigned int dump_register (const char *, const char *, int, unsigned int, int);
+extern unsigned int dump_register (const char *, const char *, const char *,
+ int, unsigned int, int);
#endif /* ! GCC_TREE_DUMP_H */
Index: tree-optimize.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-optimize.c,v
retrieving revision 2.56
diff -u -p -r2.56 tree-optimize.c
--- tree-optimize.c 8 Oct 2004 22:56:55 -0000 2.56
+++ tree-optimize.c 13 Oct 2004 15:45:12 -0000
@@ -212,7 +212,7 @@ static struct tree_opt_pass pass_init_da
static void
register_one_dump_file (struct tree_opt_pass *pass, int n)
{
- char *dot_name, *flag_name;
+ char *dot_name, *flag_name, *glob_name;
char num[10];
/* See below in next_pass_1. */
@@ -225,13 +225,15 @@ register_one_dump_file (struct tree_opt_
if (pass->properties_provided & PROP_trees)
{
flag_name = concat ("tree-", pass->name, num, NULL);
- pass->static_pass_number = dump_register (dot_name, flag_name,
+ glob_name = concat ("tree-", pass->name, NULL);
+ pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
TDF_TREE, n + TDI_tree_all, 0);
}
else
{
flag_name = concat ("rtl-", pass->name, num, NULL);
- pass->static_pass_number = dump_register (dot_name, flag_name,
+ flag_name = concat ("rtl-", pass->name, NULL);
+ pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
TDF_RTL, n, pass->letter);
}
}
Index: tree-pass.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-pass.h,v
retrieving revision 2.19
diff -u -p -r2.19 tree-pass.h
--- tree-pass.h 1 Oct 2004 07:42:49 -0000 2.19
+++ tree-pass.h 13 Oct 2004 15:45:12 -0000
@@ -78,6 +78,7 @@ struct dump_file_info
{
const char *suffix; /* suffix to give output file. */
const char *swtch; /* command line switch */
+ const char *glob; /* command line glob */
int flags; /* user flags */
int state; /* state of play */
int num; /* dump file number */