for some reason this was missed in the
2001-09-04 Nathan Sidwell <nathan@codesourcery.com> * c-common.h (tree_dump_index): Add more comments. * c-dump.c (dump_files): Name flags `tree' rather than `ast'. (dump_option_value_info): New struct. (dump_options): New array. (dump_switch_p): Parse switch options symbolically. * doc/invoke.texi (-fdump-ast): Rename to ... (-fdump-tree): ... here. Document that options are symbolic, and not all are applicable. commit From-SVN: r45433
This commit is contained in:
parent
418162d99e
commit
baff6e5433
63
gcc/c-dump.c
63
gcc/c-dump.c
|
@ -795,14 +795,32 @@ struct dump_file_info
|
||||||
int state; /* state of play */
|
int state; /* state of play */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Table of tree dump switches. */
|
/* Table of tree dump switches. This must be consistent with the
|
||||||
|
TREE_DUMP_INDEX enumeration in c-common.h */
|
||||||
static struct dump_file_info dump_files[TDI_end] =
|
static struct dump_file_info dump_files[TDI_end] =
|
||||||
{
|
{
|
||||||
{".tu", "dump-translation-unit", 0, 0},
|
{".tu", "dump-translation-unit", 0, 0},
|
||||||
{".class", "dump-class-hierarchy", 0, 0},
|
{".class", "dump-class-hierarchy", 0, 0},
|
||||||
{".original", "dump-ast-original", 0, 0},
|
{".original", "dump-tree-original", 0, 0},
|
||||||
{".optimized", "dump-ast-optimized", 0, 0},
|
{".optimized", "dump-tree-optimized", 0, 0},
|
||||||
{".inlined", "dump-ast-inlined", 0, 0},
|
{".inlined", "dump-tree-inlined", 0, 0},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Define a name->number mapping for a dump flag value. */
|
||||||
|
struct dump_option_value_info
|
||||||
|
{
|
||||||
|
const char *name; /* the name of the value */
|
||||||
|
int value; /* the value of the name */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Table of dump options. This must be consistent with the TDF_* flags
|
||||||
|
in c-common.h */
|
||||||
|
static const struct dump_option_value_info dump_options[] =
|
||||||
|
{
|
||||||
|
{"address", TDF_ADDRESS},
|
||||||
|
{"slim", TDF_SLIM},
|
||||||
|
{"all", ~0},
|
||||||
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Begin a tree dump for PHASE. Stores any user supplied flag in
|
/* Begin a tree dump for PHASE. Stores any user supplied flag in
|
||||||
|
@ -876,13 +894,38 @@ dump_switch_p (arg)
|
||||||
for (ix = 0; ix != TDI_end; ix++)
|
for (ix = 0; ix != TDI_end; ix++)
|
||||||
if ((option_value = skip_leading_substring (arg, dump_files[ix].swtch)))
|
if ((option_value = skip_leading_substring (arg, dump_files[ix].swtch)))
|
||||||
{
|
{
|
||||||
|
const char *ptr = option_value;
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
|
while (*ptr)
|
||||||
|
{
|
||||||
|
const struct dump_option_value_info *option_ptr;
|
||||||
|
const char *end_ptr;
|
||||||
|
unsigned length;
|
||||||
|
|
||||||
|
while (*ptr == '-')
|
||||||
|
ptr++;
|
||||||
|
end_ptr = strchr (ptr, '-');
|
||||||
|
if (!end_ptr)
|
||||||
|
end_ptr = ptr + strlen (ptr);
|
||||||
|
length = end_ptr - ptr;
|
||||||
|
|
||||||
|
for (option_ptr = dump_options; option_ptr->name;
|
||||||
|
option_ptr++)
|
||||||
|
if (strlen (option_ptr->name) == length
|
||||||
|
&& !memcmp (option_ptr->name, ptr, length))
|
||||||
|
{
|
||||||
|
flags |= option_ptr->value;
|
||||||
|
goto found;
|
||||||
|
}
|
||||||
|
warning ("ignoring unknown option `%.*s' in `-f%s'",
|
||||||
|
length, ptr, dump_files[ix].swtch);
|
||||||
|
found:;
|
||||||
|
ptr = end_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
dump_files[ix].state = -1;
|
dump_files[ix].state = -1;
|
||||||
if (*option_value == '-')
|
dump_files[ix].flags = flags;
|
||||||
dump_files[ix].flags
|
|
||||||
= read_integral_parameter (option_value + 1, arg, 0);
|
|
||||||
else if (*option_value)
|
|
||||||
warning ("ignoring `%s' at end of `-f%s'",
|
|
||||||
option_value, dump_files[ix].swtch);
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue