Commit e1b793e7 by Basile Starynkevitch Committed by Basile Starynkevitch

gengtype.c: Reindented.


2010-09-24  Basile Starynkevitch  <basile@starynkevitch.net>

	* gcc/gengtype.c: Reindented.

	* gcc/gengtype.h: Reindented.

	* gcc/gengtype-parse.c: Reindented.

From-SVN: r164604
parent 1d0804d4
2010-09-24 Basile Starynkevitch <basile@starynkevitch.net>
* gengtype.c: Reindented.
* gengtype.h: Reindented.
* gengtype-parse.c: Reindented.
2010-09-24 Jan Hubicka <jh@suse.cz>
PR tree-optimization/45738
/* Process source files and output type information.
Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GCC.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#include "bconfig.h"
#include "system.h"
......@@ -199,7 +199,7 @@ string_seq (void)
l1 = strlen (s1);
l2 = strlen (s2);
buf = XRESIZEVEC (char, CONST_CAST(char *, s1), l1 + l2 + 1);
buf = XRESIZEVEC (char, CONST_CAST (char *, s1), l1 + l2 + 1);
memcpy (buf + l1, s2, l2 + 1);
XDELETE (CONST_CAST (char *, s2));
s1 = buf;
......@@ -222,7 +222,7 @@ typedef_name (void)
require (',');
c2 = require (ID);
require (')');
r = concat ("VEC_", c1, "_", c2, (char *)0);
r = concat ("VEC_", c1, "_", c2, (char *) 0);
free (CONST_CAST (char *, c1));
free (CONST_CAST (char *, c2));
return r;
......@@ -239,10 +239,18 @@ consume_balanced (int opener, int closer)
for (;;)
switch (token ())
{
default: advance (); break;
case '(': consume_balanced ('(',')'); break;
case '[': consume_balanced ('[',']'); break;
case '{': consume_balanced ('{','}'); break;
default:
advance ();
break;
case '(':
consume_balanced ('(', ')');
break;
case '[':
consume_balanced ('[', ']');
break;
case '{':
consume_balanced ('{', '}');
break;
case '}':
case ']':
......@@ -272,12 +280,22 @@ consume_until_semi (bool immediate)
for (;;)
switch (token ())
{
case ';': advance (); return;
default: advance (); break;
case ';':
advance ();
return;
default:
advance ();
break;
case '(': consume_balanced ('(',')'); break;
case '[': consume_balanced ('[',']'); break;
case '{': consume_balanced ('{','}'); break;
case '(':
consume_balanced ('(', ')');
break;
case '[':
consume_balanced ('[', ']');
break;
case '{':
consume_balanced ('{', '}');
break;
case '}':
case ']':
......@@ -304,13 +322,25 @@ consume_until_comma_or_semi (bool immediate)
for (;;)
switch (token ())
{
case ',': advance (); return true;
case ';': advance (); return false;
default: advance (); break;
case ',':
advance ();
return true;
case ';':
advance ();
return false;
default:
advance ();
break;
case '(': consume_balanced ('(',')'); break;
case '[': consume_balanced ('[',']'); break;
case '{': consume_balanced ('{','}'); break;
case '(':
consume_balanced ('(', ')');
break;
case '[':
consume_balanced ('[', ']');
break;
case '{':
consume_balanced ('{', '}');
break;
case '}':
case ']':
......@@ -405,7 +435,7 @@ nestedptr_optvalue (options_p prev)
| PTR_ALIAS type_optvalue
| PARAM_IS type_optvalue
| NESTED_PTR nestedptr_optvalue
*/
*/
static options_p
option (options_p prev)
{
......@@ -426,8 +456,7 @@ option (options_p prev)
return nestedptr_optvalue (prev);
default:
parse_error ("expected an option keyword, have %s",
print_cur_token ());
parse_error ("expected an option keyword, have %s", print_cur_token ());
advance ();
return create_option (prev, "", "");
}
......@@ -615,7 +644,7 @@ declarator (type_p ty, const char **namep, options_p *optsp)
Knows that such declarations must end with a close brace (or,
erroneously, at EOF).
*/
*/
static pair_p
struct_field_seq (void)
{
......@@ -674,7 +703,7 @@ struct_field_seq (void)
Returns a partial type; under some conditions (notably
"struct foo GTY((...)) thing;") it may write an options
structure to *OPTSP.
*/
*/
static type_p
type (options_p *optsp, bool nested)
{
......@@ -698,7 +727,8 @@ type (options_p *optsp, bool nested)
/* GTY annotations follow attribute syntax
GTY_BEFORE_ID is for union/struct declarations
GTY_AFTER_ID is for variable declarations. */
enum {
enum
{
NO_GTY,
GTY_BEFORE_ID,
GTY_AFTER_ID
......@@ -760,7 +790,7 @@ type (options_p *optsp, bool nested)
s = xasprintf ("anonymous:%s:%d", lexer_line.file, lexer_line.line);
if (token () == '{')
consume_balanced ('{','}');
consume_balanced ('{', '}');
return create_scalar_type (s);
default:
......@@ -864,7 +894,7 @@ extern_or_static (void)
static void
def_vec (void)
{
bool is_scalar = (token() == DEFVEC_I);
bool is_scalar = (token () == DEFVEC_I);
const char *type;
require2 (DEFVEC_OP, DEFVEC_I);
......
......@@ -28,7 +28,8 @@
/* Data types, macros, etc. used only in this file. */
/* Kinds of types we can understand. */
enum typekind {
enum typekind
{
TYPE_SCALAR,
TYPE_STRING,
TYPE_STRUCT,
......@@ -71,7 +72,7 @@ struct pair
/* A description of a type. */
enum gc_used_enum
{
{
GC_UNUSED = 0,
GC_USED,
/* Used for structures whose definitions we haven't seen so far when
......@@ -80,7 +81,7 @@ enum gc_used_enum
information for it, we assume that it never has been defined. */
GC_MAYBE_POINTED_TO,
GC_POINTED_TO
};
};
struct type
{
......@@ -88,9 +89,11 @@ struct type
type_p next;
type_p pointer_to;
enum gc_used_enum gc_used;
union {
union
{
type_p p;
struct {
struct
{
const char *tag;
struct fileloc line;
pair_p fields;
......@@ -99,11 +102,13 @@ struct type
type_p lang_struct;
} s;
bool scalar_is_char;
struct {
struct
{
type_p p;
const char *len;
} a;
struct {
struct
{
type_p stru;
type_p param[NUM_PARAM];
struct fileloc line;
......@@ -129,17 +134,17 @@ struct outf
size_t bufused;
char *buf;
};
typedef struct outf * outf_p;
typedef struct outf *outf_p;
/* An output file, suitable for definitions, that can see declarations
made in INPUT_FILE and is linked into every language that uses
INPUT_FILE. May return NULL in plugin mode. */
extern outf_p get_output_file_with_visibility
(const char *input_file);
extern outf_p get_output_file_with_visibility (const char *input_file);
const char *get_output_file_name (const char *);
/* Print, like fprintf, to O. No-op if O is NULL. */
static void oprintf (outf_p o, const char *S, ...)
static void
oprintf (outf_p o, const char *S, ...)
ATTRIBUTE_PRINTF_2;
/* The list of output files. */
......@@ -147,7 +152,7 @@ static outf_p output_files;
/* The plugin input files and their number; in that case only
a single file is produced. */
static char** plugin_files;
static char **plugin_files;
static size_t nb_plugin_files;
/* the generated plugin output name & file */
static outf_p plugin_output;
......@@ -164,12 +169,12 @@ static size_t srcdir_len = 0;
static outf_p create_file (const char *, const char *);
static const char * get_file_basename (const char *);
static const char * get_file_realbasename (const char *);
static const char * get_file_srcdir_relative_path (const char *);
static const char *get_file_basename (const char *);
static const char *get_file_realbasename (const char *);
static const char *get_file_srcdir_relative_path (const char *);
static int get_prefix_langdir_index (const char *);
static const char * get_file_langdir (const char *);
static const char *get_file_langdir (const char *);
/* Nonzero iff an error has occurred. */
......@@ -251,13 +256,13 @@ get_lang_bitmap (const char *gtfile)
if (gtfile == this_file)
/* Things defined in this file are universal. */
return (((lang_bitmap)1) << num_lang_dirs) - 1;
return (((lang_bitmap) 1) << num_lang_dirs) - 1;
else
{
lang_bitmap n = 0;
int i;
for (i = -(int) sizeof (lang_bitmap); i < 0; i++)
n = (n << CHAR_BIT) + (unsigned char)gtfile[i];
n = (n << CHAR_BIT) + (unsigned char) gtfile[i];
return n;
}
}
......@@ -270,7 +275,7 @@ set_lang_bitmap (char *gtfile, lang_bitmap n)
int i;
for (i = -1; i >= -(int) sizeof (lang_bitmap); i--)
{
gtfile[i] = n & ((1U << CHAR_BIT)-1);
gtfile[i] = n & ((1U << CHAR_BIT) - 1);
n >>= CHAR_BIT;
}
}
......@@ -319,8 +324,7 @@ measure_input_list (FILE *list)
touch *HEREP, and sets *LINEP to NULL. POS is used for
diagnostics. */
static bool
read_input_line (FILE *list, char **herep, char **linep,
struct fileloc *pos)
read_input_line (FILE *list, char **herep, char **linep, struct fileloc *pos)
{
char *here = *herep;
char *line;
......@@ -354,7 +358,8 @@ read_input_line (FILE *list, char **herep, char **linep,
error_at_line (pos, "junk on line after language tag [%s]", line);
}
else
error_at_line (pos, "missing close bracket for language tag [%s", line);
error_at_line (pos, "missing close bracket for language tag [%s",
line);
*herep = here;
*linep = line;
......@@ -429,7 +434,8 @@ read_input_list (const char *listname)
for (i = 0; i < langno; i++)
if (strcmp (lang_dir_names[i], line) == 0)
{
error_at_line (&epos, "duplicate language tag [%s]", line);
error_at_line (&epos, "duplicate language tag [%s]",
line);
curlangs = 1 << i;
here = committed;
goto next_line;
......@@ -449,13 +455,15 @@ read_input_list (const char *listname)
current language to the existing string's bitmap. */
lang_bitmap bmap = get_lang_bitmap (gt_files[i]);
if (bmap & curlangs)
error_at_line (&epos, "file %s specified more than once "
"for language %s", line, langno == 0
? "(all)"
: lang_dir_names[langno - 1]);
error_at_line (&epos,
"file %s specified more than once "
"for language %s", line,
langno ==
0 ? "(all)" : lang_dir_names[langno -
1]);
bmap |= curlangs;
set_lang_bitmap (CONST_CAST(char *, gt_files[i]), bmap);
set_lang_bitmap (CONST_CAST (char *, gt_files[i]), bmap);
here = committed;
goto next_line;
}
......@@ -493,7 +501,7 @@ read_input_list (const char *listname)
{
size_t l;
for (l = 0; l < num_lang_dirs; l++)
if ((size_t)(slashpos - basename) == strlen (lang_dir_names [l])
if ((size_t) (slashpos - basename) == strlen (lang_dir_names[l])
&& memcmp (basename, lang_dir_names[l],
strlen (lang_dir_names[l])) == 0)
{
......@@ -527,6 +535,7 @@ static struct type string_type = {
static struct type scalar_nonchar = {
TYPE_SCALAR, 0, 0, GC_USED, {0}
};
static struct type scalar_char = {
TYPE_SCALAR, 0, 0, GC_USED, {0}
};
......@@ -538,8 +547,7 @@ static type_p structures;
static type_p param_structs;
static pair_p variables;
static type_p find_param_structure
(type_p t, type_p param[NUM_PARAM]);
static type_p find_param_structure (type_p t, type_p param[NUM_PARAM]);
static type_p adjust_field_tree_exp (type_p t, options_p opt);
static type_p adjust_field_rtx_def (type_p t, options_p opt);
......@@ -614,13 +622,11 @@ new_structure (const char *name, int isunion, struct fileloc *pos,
/* temporary kludge - gengtype doesn't handle conditionals or
macros. Ignore any attempt to define struct location_s, unless
it is coming from this file (main() sets it up safely). */
if (!strcmp (name, "location_s") && !isunion
&& pos->file != this_file)
if (!strcmp (name, "location_s") && !isunion && pos->file != this_file)
return find_structure (name, 0);
for (si = structures; si != NULL; si = si->next)
if (strcmp (name, si->u.s.tag) == 0
&& UNION_P (si) == isunion)
if (strcmp (name, si->u.s.tag) == 0 && UNION_P (si) == isunion)
{
type_p ls = NULL;
if (si->kind == TYPE_LANG_STRUCT)
......@@ -682,8 +688,7 @@ new_structure (const char *name, int isunion, struct fileloc *pos,
/* Reset location_s's location to input.h so that we know where to
write out its mark routine. */
if (!strcmp (name, "location_s") && !isunion
&& pos->file == this_file)
if (!strcmp (name, "location_s") && !isunion && pos->file == this_file)
{
size_t n;
for (n = 0; n < num_gt_files; n++)
......@@ -708,8 +713,7 @@ find_structure (const char *name, int isunion)
type_p s;
for (s = structures; s != NULL; s = s->next)
if (strcmp (name, s->u.s.tag) == 0
&& UNION_P (s) == isunion)
if (strcmp (name, s->u.s.tag) == 0 && UNION_P (s) == isunion)
return s;
s = XCNEW (struct type);
......@@ -763,7 +767,7 @@ create_scalar_type (const char *name)
type_p
create_pointer (type_p t)
{
if (! t->pointer_to)
if (!t->pointer_to)
{
type_p r = XCNEW (struct type);
r->kind = TYPE_POINTER;
......@@ -796,7 +800,7 @@ create_option (options_p next, const char *name, const void *info)
options_p o = XNEW (struct options);
o->next = next;
o->name = name;
o->info = (const char*) info;
o->info = (const char *) info;
return o;
}
......@@ -885,9 +889,9 @@ create_optional_field_ (pair_p next, type_p type, const char *name,
/* Create the field and give it the new fake union type. Add a "desc"
tag that specifies the condition under which the field is valid. */
return create_field_all (next, union_type, name,
create_option (0, "desc", cond),
this_file, line);
create_option (0, "desc", cond), this_file, line);
}
#define create_optional_field(next,type,name,cond) \
create_optional_field_(next,type,name,cond,__LINE__)
......@@ -911,20 +915,21 @@ nreverse_pairs (pair_p list)
/* We don't want to see codes that are only for generator files. */
#undef GENERATOR_FILE
enum rtx_code {
enum rtx_code
{
#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) ENUM ,
#include "rtl.def"
#undef DEF_RTL_EXPR
NUM_RTX_CODE
};
static const char * const rtx_name[NUM_RTX_CODE] = {
static const char *const rtx_name[NUM_RTX_CODE] = {
#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) NAME ,
#include "rtl.def"
#undef DEF_RTL_EXPR
};
static const char * const rtx_format[NUM_RTX_CODE] = {
static const char *const rtx_format[NUM_RTX_CODE] = {
#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) FORMAT ,
#include "rtl.def"
#undef DEF_RTL_EXPR
......@@ -934,7 +939,8 @@ static int rtx_next_new[NUM_RTX_CODE];
/* We also need codes and names for insn notes (not register notes).
Note that we do *not* bias the note values here. */
enum insn_note {
enum insn_note
{
#define DEF_INSN_NOTE(NAME) NAME,
#include "insn-notes.def"
#undef DEF_INSN_NOTE
......@@ -944,7 +950,7 @@ enum insn_note {
/* We must allocate one more entry here, as we use NOTE_INSN_MAX as the
default field for line number notes. */
static const char *const note_insn_name[NOTE_INSN_MAX+1] = {
static const char *const note_insn_name[NOTE_INSN_MAX + 1] = {
#define DEF_INSN_NOTE(NAME) #NAME,
#include "insn-notes.def"
#undef DEF_INSN_NOTE
......@@ -992,8 +998,7 @@ write_rtx_next (void)
oprintf (f, " 0,\n");
else
oprintf (f,
" RTX_HDR_SIZE + %d * sizeof (rtunion),\n",
rtx_next_new[i]);
" RTX_HDR_SIZE + %d * sizeof (rtunion),\n", rtx_next_new[i]);
oprintf (f, "};\n");
}
......@@ -1025,7 +1030,8 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
mem_attrs_tp = create_pointer (find_structure ("mem_attrs", 0));
reg_attrs_tp = create_pointer (find_structure ("reg_attrs", 0));
basic_block_tp = create_pointer (find_structure ("basic_block_def", 0));
constant_tp = create_pointer (find_structure ("constant_descriptor_rtx", 0));
constant_tp =
create_pointer (find_structure ("constant_descriptor_rtx", 0));
scalar_tp = &scalar_nonchar; /* rtunion int */
{
......@@ -1109,8 +1115,7 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
t = scalar_tp, subname = "rt_int";
else if (i == CODE_LABEL && aindex == 4)
t = rtx_tp, subname = "rt_rtx";
else if (i == LABEL_REF
&& (aindex == 1 || aindex == 2))
else if (i == LABEL_REF && (aindex == 1 || aindex == 2))
t = rtx_tp, subname = "rt_rtx";
else if (i == NOTE && aindex == 4)
t = note_union_tp, subname = "";
......@@ -1179,7 +1184,7 @@ adjust_field_rtx_def (type_p t, options_p ARG_UNUSED (opt))
error_at_line (&lexer_line,
"rtx type `%s' has `%c' in position %lu, can't handle",
rtx_name[i], rtx_format[i][aindex],
(unsigned long)aindex);
(unsigned long) aindex);
t = &string_type;
subname = "rt_int";
break;
......@@ -1282,8 +1287,8 @@ adjust_field_type (type_p t, options_p opt)
{
int num = ISDIGIT (opt->name[5]) ? opt->name[5] - '0' : 0;
if (! UNION_OR_STRUCT_P (t)
&& (t->kind != TYPE_POINTER || ! UNION_OR_STRUCT_P (t->u.p)))
if (!UNION_OR_STRUCT_P (t)
&& (t->kind != TYPE_POINTER || !UNION_OR_STRUCT_P (t->u.p)))
{
error_at_line (&lexer_line,
"option `%s' may only be applied to structures or structure pointers",
......@@ -1294,8 +1299,9 @@ adjust_field_type (type_p t, options_p opt)
params_p = 1;
if (params[num] != NULL)
error_at_line (&lexer_line, "duplicate `%s' option", opt->name);
if (! ISDIGIT (opt->name[5]))
params[num] = create_pointer (CONST_CAST2(type_p, const char *, opt->info));
if (!ISDIGIT (opt->name[5]))
params[num] =
create_pointer (CONST_CAST2 (type_p, const char *, opt->info));
else
params[num] = CONST_CAST2 (type_p, const char *, opt->info);
}
......@@ -1320,10 +1326,8 @@ adjust_field_type (type_p t, options_p opt)
t = pointer_p ? create_pointer (realt) : realt;
}
if (! length_p
&& pointer_p
&& t->u.p->kind == TYPE_SCALAR
&& t->u.p->u.scalar_is_char)
if (!length_p
&& pointer_p && t->u.p->kind == TYPE_SCALAR && t->u.p->u.scalar_is_char)
return &string_type;
if (t->kind == TYPE_ARRAY && t->u.a.p->kind == TYPE_POINTER
&& t->u.a.p->u.p->kind == TYPE_SCALAR
......@@ -1341,7 +1345,8 @@ static void set_gc_used (pair_p);
static void
process_gc_options (options_p opt, enum gc_used_enum level, int *maybe_undef,
int *pass_param, int *length, int *skip, type_p *nested_ptr)
int *pass_param, int *length, int *skip,
type_p *nested_ptr)
{
options_p o;
for (o = opt; o; o = o->next)
......@@ -1522,7 +1527,7 @@ oprintf (outf_p o, const char *format, ...)
va_start (ap, format);
slength = vasprintf (&s, format, ap);
if (s == NULL || (int)slength < 0)
if (s == NULL || (int) slength < 0)
fatal ("out of memory");
va_end (ap);
......@@ -1531,9 +1536,11 @@ oprintf (outf_p o, const char *format, ...)
size_t new_len = o->buflength;
if (new_len == 0)
new_len = 1024;
do {
do
{
new_len *= 2;
} while (o->bufused + slength >= new_len);
}
while (o->bufused + slength >= new_len);
o->buf = XRESIZEVEC (char, o->buf, new_len);
o->buflength = new_len;
}
......@@ -1563,7 +1570,7 @@ open_base_files (void)
/* gtype-desc.c is a little special, so we create it here. */
{
/* The order of files here matters very much. */
static const char *const ifiles [] = {
static const char *const ifiles[] = {
"config.h", "system.h", "coretypes.h", "tm.h",
"hashtab.h", "splay-tree.h", "obstack.h", "bitmap.h", "input.h",
"tree.h", "rtl.h", "function.h", "insn-config.h", "expr.h",
......@@ -1592,7 +1599,7 @@ open_base_files (void)
static const char *
get_file_realbasename (const char *f)
{
const char * lastslash = strrchr (f, '/');
const char *lastslash = strrchr (f, '/');
return (lastslash != NULL) ? lastslash + 1 : f;
}
......@@ -1617,7 +1624,7 @@ get_file_srcdir_relative_path (const char *f)
static const char *
get_file_basename (const char *f)
{
const char * srcdir_path = get_file_srcdir_relative_path (f);
const char *srcdir_path = get_file_srcdir_relative_path (f);
return (srcdir_path != NULL) ? srcdir_path : get_file_realbasename (f);
}
......@@ -1633,7 +1640,7 @@ get_prefix_langdir_index (const char *f)
for (lang_index = 0; lang_index < num_lang_dirs; lang_index++)
{
const char * langdir = lang_dir_names [lang_index];
const char *langdir = lang_dir_names[lang_index];
size_t langdir_len = strlen (langdir);
if (f_len > langdir_len
......@@ -1656,18 +1663,17 @@ get_file_langdir (const char *f)
srcdir relative, no point in looking further. */
int lang_index;
const char * srcdir_relative_path = get_file_srcdir_relative_path (f);
const char * r;
const char *srcdir_relative_path = get_file_srcdir_relative_path (f);
const char *r;
if (!srcdir_relative_path)
return NULL;
lang_index = get_prefix_langdir_index (srcdir_relative_path);
if (lang_index < 0
&& strncmp (srcdir_relative_path, "c-family", 8) == 0)
if (lang_index < 0 && strncmp (srcdir_relative_path, "c-family", 8) == 0)
r = "c-family";
else if (lang_index >= 0)
r = lang_dir_names [lang_index];
r = lang_dir_names[lang_index];
else
r = NULL;
......@@ -1685,7 +1691,7 @@ get_file_gtfilename (const char *f)
const char *basename = get_file_realbasename (f);
const char *langdir = get_file_langdir (f);
char * result =
char *result =
(langdir ? xasprintf ("gt-%s-%s", langdir, basename)
: xasprintf ("gt-%s", basename));
......@@ -1696,7 +1702,7 @@ get_file_gtfilename (const char *f)
char *s = result;
for (; *s != '.'; s++)
if (! ISALNUM (*s) && *s != '-')
if (!ISALNUM (*s) && *s != '-')
*s = '-';
memcpy (s, ".h", sizeof (".h"));
......@@ -1739,9 +1745,9 @@ get_output_file_with_visibility (const char *input_file)
basename = get_file_basename (input_file);
len = strlen (basename);
if ((len > 2 && memcmp (basename+len-2, ".c", 2) == 0)
|| (len > 2 && memcmp (basename+len-2, ".y", 2) == 0)
|| (len > 3 && memcmp (basename+len-3, ".in", 3) == 0))
if ((len > 2 && memcmp (basename + len - 2, ".c", 2) == 0)
|| (len > 2 && memcmp (basename + len - 2, ".y", 2) == 0)
|| (len > 3 && memcmp (basename + len - 3, ".in", 3) == 0))
{
output_name = get_file_gtfilename (input_file);
for_name = basename;
......@@ -1768,7 +1774,8 @@ get_output_file_with_visibility (const char *input_file)
else if (strncmp (basename, "cp", 2) == 0 && IS_DIR_SEPARATOR (basename[2])
&& strcmp (basename + 3, "name-lookup.h") == 0)
output_name = "gt-cp-name-lookup.h", for_name = "cp/name-lookup.c";
else if (strncmp (basename, "objc", 4) == 0 && IS_DIR_SEPARATOR (basename[4])
else if (strncmp (basename, "objc", 4) == 0
&& IS_DIR_SEPARATOR (basename[4])
&& strcmp (basename + 5, "objc-act.h") == 0)
output_name = "gt-objc-objc-act.h", for_name = "objc/objc-act.c";
else
......@@ -1844,7 +1851,7 @@ close_output_files (void)
for (of = output_files; of; of = of->next)
{
if (!is_file_equal(of))
if (!is_file_equal (of))
{
FILE *newfile = fopen (of->name, "w");
if (newfile == NULL)
......@@ -1854,13 +1861,14 @@ close_output_files (void)
if (fclose (newfile) != 0)
fatal ("closing output file %s: %s", of->name, xstrerror (errno));
}
free(of->buf);
free (of->buf);
of->buf = NULL;
of->bufused = of->buflength = 0;
}
}
struct flist {
struct flist
{
struct flist *next;
int started_p;
const char *name;
......@@ -1873,10 +1881,8 @@ struct walk_type_data;
For structures, given a pointer to the item in 'val'.
For misc. pointers, given the item in 'val'.
*/
typedef void (*process_field_fn)
(type_p f, const struct walk_type_data *p);
typedef void (*func_name_fn)
(type_p s, const struct walk_type_data *p);
typedef void (*process_field_fn) (type_p f, const struct walk_type_data * p);
typedef void (*func_name_fn) (type_p s, const struct walk_type_data * p);
/* Parameters for write_types. */
......@@ -1895,7 +1901,7 @@ static void output_escaped_param (struct walk_type_data *d,
const char *, const char *);
static void output_mangled_typename (outf_p, const_type_p);
static void walk_type (type_p t, struct walk_type_data *d);
static void write_func_for_structure (type_p orig_s, type_p s, type_p * param,
static void write_func_for_structure (type_p orig_s, type_p s, type_p *param,
const struct write_types_data *wtd);
static void write_types_process_field
(type_p f, const struct walk_type_data *d);
......@@ -1906,17 +1912,16 @@ static void write_types (outf_p output_header,
static void write_types_local_process_field
(type_p f, const struct walk_type_data *d);
static void write_local_func_for_structure
(const_type_p orig_s, type_p s, type_p * param);
(const_type_p orig_s, type_p s, type_p *param);
static void write_local (outf_p output_header,
type_p structures,
type_p param_structs);
type_p structures, type_p param_structs);
static void write_enum_defn (type_p structures, type_p param_structs);
static int contains_scalar_p (type_p t);
static void put_mangled_filename (outf_p , const char *);
static void put_mangled_filename (outf_p, const char *);
static void finish_root_table (struct flist *flp, const char *pfx,
const char *tname, const char *lastname,
const char *name);
static void write_root (outf_p , pair_p, type_p, const char *, int,
static void write_root (outf_p, pair_p, type_p, const char *, int,
struct fileloc *, const char *, bool);
static void write_array (outf_p f, pair_p v,
const struct write_types_data *wtd);
......@@ -1951,7 +1956,8 @@ output_mangled_typename (outf_p of, const_type_p t)
{
if (t == NULL)
oprintf (of, "Z");
else switch (t->kind)
else
switch (t->kind)
{
case TYPE_POINTER:
oprintf (of, "P");
......@@ -1966,7 +1972,8 @@ output_mangled_typename (outf_p of, const_type_p t)
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
oprintf (of, "%lu%s", (unsigned long) strlen (t->u.s.tag), t->u.s.tag);
oprintf (of, "%lu%s", (unsigned long) strlen (t->u.s.tag),
t->u.s.tag);
break;
case TYPE_PARAM_STRUCT:
{
......@@ -1996,7 +2003,8 @@ output_escaped_param (struct walk_type_data *d, const char *param,
for (p = param; *p; p++)
if (*p != '%')
oprintf (d->of, "%c", *p);
else switch (*++p)
else
switch (*++p)
{
case 'h':
oprintf (d->of, "(%s)", d->prev_val[2]);
......@@ -2076,8 +2084,7 @@ walk_type (type_p t, struct walk_type_data *d)
else if (strcmp (oo->name, "param_is") == 0)
;
else if (strncmp (oo->name, "param", 5) == 0
&& ISDIGIT (oo->name[5])
&& strcmp (oo->name + 6, "_is") == 0)
&& ISDIGIT (oo->name[5]) && strcmp (oo->name + 6, "_is") == 0)
;
else if (strcmp (oo->name, "chain_next") == 0)
;
......@@ -2101,7 +2108,7 @@ walk_type (type_p t, struct walk_type_data *d)
if (pointer_p)
t = t->u.p;
if (! UNION_OR_STRUCT_P (t))
if (!UNION_OR_STRUCT_P (t))
error_at_line (d->line, "`use_params' option on unimplemented type");
else
t = find_param_structure (t, d->param);
......@@ -2125,12 +2132,11 @@ walk_type (type_p t, struct walk_type_data *d)
t = nt;
}
else
error_at_line (d->line, "no parameter defined for `%s'",
d->val);
error_at_line (d->line, "no parameter defined for `%s'", d->val);
}
if (maybe_undef_p
&& (t->kind != TYPE_POINTER || ! UNION_OR_STRUCT_P (t->u.p)))
&& (t->kind != TYPE_POINTER || !UNION_OR_STRUCT_P (t->u.p)))
{
error_at_line (d->line,
"field `%s' has invalid option `maybe_undef_p'\n",
......@@ -2147,16 +2153,15 @@ walk_type (type_p t, struct walk_type_data *d)
case TYPE_POINTER:
{
if (maybe_undef_p
&& t->u.p->u.s.line.file == NULL)
if (maybe_undef_p && t->u.p->u.s.line.file == NULL)
{
oprintf (d->of, "%*sgcc_assert (!%s);\n", d->indent, "", d->val);
break;
}
if (! length)
if (!length)
{
if (! UNION_OR_STRUCT_P (t->u.p)
if (!UNION_OR_STRUCT_P (t->u.p)
&& t->u.p->kind != TYPE_PARAM_STRUCT)
{
error_at_line (d->line,
......@@ -2169,12 +2174,11 @@ walk_type (type_p t, struct walk_type_data *d)
{
const char *oldprevval2 = d->prev_val[2];
if (! UNION_OR_STRUCT_P (nested_ptr_d->type))
if (!UNION_OR_STRUCT_P (nested_ptr_d->type))
{
error_at_line (d->line,
"field `%s' has invalid "
"option `nested_ptr'\n",
d->val);
"option `nested_ptr'\n", d->val);
return;
}
......@@ -2186,8 +2190,7 @@ walk_type (type_p t, struct walk_type_data *d)
(nested_ptr_d->type->kind == TYPE_UNION
? "union" : "struct"),
nested_ptr_d->type->u.s.tag,
d->fn_wants_lvalue ? "" : "const ",
d->val);
d->fn_wants_lvalue ? "" : "const ", d->val);
oprintf (d->of, "%*s", d->indent + 2, "");
output_escaped_param (d, nested_ptr_d->convert_from,
"nested_ptr");
......@@ -2223,8 +2226,8 @@ walk_type (type_p t, struct walk_type_data *d)
oprintf (d->of, "%*sif (%s != NULL) {\n", d->indent, "", d->val);
d->indent += 2;
oprintf (d->of, "%*ssize_t i%d;\n", d->indent, "", loopcounter);
oprintf (d->of, "%*sfor (i%d = 0; i%d != (size_t)(", d->indent, "",
loopcounter, loopcounter);
oprintf (d->of, "%*sfor (i%d = 0; i%d != (size_t)(", d->indent,
"", loopcounter, loopcounter);
output_escaped_param (d, length, "length");
oprintf (d->of, "); i%d++) {\n", loopcounter);
d->indent += 2;
......@@ -2238,7 +2241,7 @@ walk_type (type_p t, struct walk_type_data *d)
d->used_length = 0;
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
d->process_field(t, d);
d->process_field (t, d);
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
}
......@@ -2302,7 +2305,7 @@ walk_type (type_p t, struct walk_type_data *d)
int seen_default_p = 0;
options_p o;
if (! t->u.s.line.file)
if (!t->u.s.line.file)
error_at_line (d->line, "incomplete structure `%s'", t->u.s.tag);
if ((d->bitmap & t->u.s.bitmap) != d->bitmap)
......@@ -2315,7 +2318,7 @@ walk_type (type_p t, struct walk_type_data *d)
/* Some things may also be defined in the structure's options. */
for (o = t->u.s.opt; o; o = o->next)
if (! desc && strcmp (o->name, "desc") == 0)
if (!desc && strcmp (o->name, "desc") == 0)
desc = o->info;
d->prev_val[2] = oldval;
......@@ -2324,7 +2327,8 @@ walk_type (type_p t, struct walk_type_data *d)
{
if (desc == NULL)
{
error_at_line (d->line, "missing `desc' option for union `%s'",
error_at_line (d->line,
"missing `desc' option for union `%s'",
t->u.s.tag);
desc = "1";
}
......@@ -2374,11 +2378,11 @@ walk_type (type_p t, struct walk_type_data *d)
d->indent += 2;
seen_default_p = 1;
}
else if (! union_p && (default_p || tagid))
else if (!union_p && (default_p || tagid))
error_at_line (d->line,
"can't use `%s' outside a union on field `%s'",
default_p ? "default" : "tag", f->name);
else if (union_p && ! (default_p || tagid)
else if (union_p && !(default_p || tagid)
&& f->type->kind == TYPE_SCALAR)
{
fprintf (stderr,
......@@ -2386,7 +2390,7 @@ walk_type (type_p t, struct walk_type_data *d)
d->line->file, d->line->line, f->name);
continue;
}
else if (union_p && ! (default_p || tagid))
else if (union_p && !(default_p || tagid))
error_at_line (d->line,
"field `%s' is missing `tag' or `default' option",
f->name);
......@@ -2415,7 +2419,7 @@ walk_type (type_p t, struct walk_type_data *d)
d->prev_val[1] = oldprevval1;
d->prev_val[2] = oldprevval2;
if (union_p && ! seen_default_p)
if (union_p && !seen_default_p)
{
oprintf (d->of, "%*sdefault:\n", d->indent, "");
oprintf (d->of, "%*s break;\n", d->indent, "");
......@@ -2488,8 +2492,7 @@ write_types_process_field (type_p f, const struct walk_type_data *d)
oprintf (d->of, ", gt_e_");
output_mangled_typename (d->of, f);
}
else if (UNION_OR_STRUCT_P (f)
&& f->u.p->u.s.line.file != NULL)
else if (UNION_OR_STRUCT_P (f) && f->u.p->u.s.line.file != NULL)
{
oprintf (d->of, ", gt_ggc_e_");
output_mangled_typename (d->of, f);
......@@ -2551,7 +2554,7 @@ output_type_enum (outf_p of, type_p s)
static outf_p
get_output_file_for_structure (const_type_p s, type_p *param)
{
const char * fn = s->u.s.line.file;
const char *fn = s->u.s.line.file;
int i;
/* This is a hack, and not the good kind either. */
......@@ -2682,8 +2685,7 @@ write_func_for_structure (type_p orig_s, type_p s, type_p *param,
oprintf (d.of, ");\n");
oprintf (d.of, " if (xprev == NULL) break;\n");
oprintf (d.of, " x = xprev;\n");
oprintf (d.of, " (void) %s (xprev",
wtd->marker_routine);
oprintf (d.of, " (void) %s (xprev", wtd->marker_routine);
if (wtd->param_prefix)
{
oprintf (d.of, ", xprev, gt_%s_", wtd->param_prefix);
......@@ -2745,13 +2747,11 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
emitted afterwards. This is needed in plugin mode. */
oprintf (output_header, "/* macros and declarations */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
if (s->gc_used == GC_POINTED_TO || s->gc_used == GC_MAYBE_POINTED_TO)
{
options_p opt;
if (s->gc_used == GC_MAYBE_POINTED_TO
&& s->u.s.line.file == NULL)
if (s->gc_used == GC_MAYBE_POINTED_TO && s->u.s.line.file == NULL)
continue;
oprintf (output_header, "#define gt_%s_", wtd->prefix);
......@@ -2760,16 +2760,14 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
oprintf (output_header,
" if (X != NULL) gt_%sx_%s (X);\\\n", wtd->prefix,
s->u.s.tag);
oprintf (output_header,
" } while (0)\n");
oprintf (output_header, " } while (0)\n");
for (opt = s->u.s.opt; opt; opt = opt->next)
if (strcmp (opt->name, "ptr_alias") == 0)
{
const_type_p const t = (const_type_p) opt->info;
if (t->kind == TYPE_STRUCT
|| t->kind == TYPE_UNION
|| t->kind == TYPE_LANG_STRUCT)
|| t->kind == TYPE_UNION || t->kind == TYPE_LANG_STRUCT)
oprintf (output_header,
"#define gt_%sx_%s gt_%sx_%s\n",
wtd->prefix, s->u.s.tag, wtd->prefix, t->u.s.tag);
......@@ -2815,13 +2813,11 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
/* At last we emit the functions code. */
oprintf (output_header, "\n/* functions code */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
if (s->gc_used == GC_POINTED_TO || s->gc_used == GC_MAYBE_POINTED_TO)
{
options_p opt;
if (s->gc_used == GC_MAYBE_POINTED_TO
&& s->u.s.line.file == NULL)
if (s->gc_used == GC_MAYBE_POINTED_TO && s->u.s.line.file == NULL)
continue;
for (opt = s->u.s.opt; opt; opt = opt->next)
if (strcmp (opt->name, "ptr_alias") == 0)
......@@ -2856,15 +2852,13 @@ write_types (outf_p output_header, type_p structures, type_p param_structs,
}
}
static const struct write_types_data ggc_wtd =
{
static const struct write_types_data ggc_wtd = {
"ggc_m", NULL, "ggc_mark", "ggc_test_and_set_mark", NULL,
"GC marker procedures. ",
FALSE
};
static const struct write_types_data pch_wtd =
{
static const struct write_types_data pch_wtd = {
"pch_n", "pch_p", "gt_pch_note_object", "gt_pch_note_object",
"gt_pch_note_reorder",
"PCH type-walking procedures. ",
......@@ -2951,8 +2945,7 @@ write_local (outf_p output_header, type_p structures, type_p param_structs)
return;
oprintf (output_header, "\n/* Local pointer-walking routines. */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
if (s->gc_used == GC_POINTED_TO || s->gc_used == GC_MAYBE_POINTED_TO)
{
options_p opt;
......@@ -2964,8 +2957,7 @@ write_local (outf_p output_header, type_p structures, type_p param_structs)
{
const_type_p const t = (const_type_p) opt->info;
if (t->kind == TYPE_STRUCT
|| t->kind == TYPE_UNION
|| t->kind == TYPE_LANG_STRUCT)
|| t->kind == TYPE_UNION || t->kind == TYPE_LANG_STRUCT)
{
oprintf (output_header, "#define gt_pch_p_");
output_mangled_typename (output_header, s);
......@@ -3000,7 +2992,7 @@ write_local (outf_p output_header, type_p structures, type_p param_structs)
for (s = param_structs; s; s = s->next)
if (s->gc_used == GC_POINTED_TO)
{
type_p * param = s->u.param_struct.param;
type_p *param = s->u.param_struct.param;
type_p stru = s->u.param_struct.stru;
/* Declare the marker procedure. */
......@@ -3131,8 +3123,7 @@ finish_root_table (struct flist *flp, const char *pfx, const char *lastname,
if (bitmap & 1)
{
oprintf (base_files[fnum],
"extern const struct %s gt_%s_",
tname, pfx);
"extern const struct %s gt_%s_", tname, pfx);
put_mangled_filename (base_files[fnum], fli2->name);
oprintf (base_files[fnum], "[];\n");
}
......@@ -3141,9 +3132,8 @@ finish_root_table (struct flist *flp, const char *pfx, const char *lastname,
{
size_t fnum;
for (fnum = 0; base_files && fnum < num_lang_dirs; fnum++)
oprintf (base_files [fnum],
"EXPORTED_CONST struct %s * const %s[] = {\n",
tname, name);
oprintf (base_files[fnum],
"EXPORTED_CONST struct %s * const %s[] = {\n", tname, name);
}
......@@ -3300,8 +3290,7 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
error_at_line (line,
"both `%s.%s.%s' and `%s.%s.%s' have tag `%s'",
name, fld->name, validf->name,
name, fld->name, ufld->name,
tag);
name, fld->name, ufld->name, tag);
validf = ufld;
}
if (validf != NULL)
......@@ -3340,7 +3329,7 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
tp = type->u.p;
if (! has_length && UNION_OR_STRUCT_P (tp))
if (!has_length && UNION_OR_STRUCT_P (tp))
{
oprintf (f, " &gt_ggc_mx_%s,\n", tp->u.s.tag);
if (emit_pch)
......@@ -3348,7 +3337,7 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
else
oprintf (f, " NULL");
}
else if (! has_length && tp->kind == TYPE_PARAM_STRUCT)
else if (!has_length && tp->kind == TYPE_PARAM_STRUCT)
{
oprintf (f, " &gt_ggc_m_");
output_mangled_typename (f, tp);
......@@ -3396,9 +3385,7 @@ write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
break;
default:
error_at_line (line,
"global `%s' is unimplemented type",
name);
error_at_line (line, "global `%s' is unimplemented type", name);
}
}
......@@ -3424,8 +3411,7 @@ write_array (outf_p f, pair_p v, const struct write_types_data *wtd)
if (wtd->param_prefix)
{
oprintf (f, "static void gt_%sa_%s\n", wtd->param_prefix, v->name);
oprintf (f,
" (void *, void *, gt_pointer_operator, void *);\n");
oprintf (f, " (void *, void *, gt_pointer_operator, void *);\n");
oprintf (f, "static void gt_%sa_%s (ATTRIBUTE_UNUSED void *this_obj,\n",
wtd->param_prefix, v->name);
oprintf (d.of,
......@@ -3440,8 +3426,7 @@ write_array (outf_p f, pair_p v, const struct write_types_data *wtd)
}
d.opt = v->opt;
oprintf (f, "static void gt_%sa_%s (void *);\n",
wtd->prefix, v->name);
oprintf (f, "static void gt_%sa_%s (void *);\n", wtd->prefix, v->name);
oprintf (f, "static void\ngt_%sa_%s (ATTRIBUTE_UNUSED void *x_p)\n",
wtd->prefix, v->name);
oprintf (f, "{\n");
......@@ -3476,8 +3461,7 @@ write_roots (pair_p variables, bool emit_pch)
else if (strcmp (o->name, "param_is") == 0)
;
else if (strncmp (o->name, "param", 5) == 0
&& ISDIGIT (o->name[5])
&& strcmp (o->name + 6, "_is") == 0)
&& ISDIGIT (o->name[5]) && strcmp (o->name + 6, "_is") == 0)
;
else if (strcmp (o->name, "if_marked") == 0)
;
......@@ -3496,13 +3480,13 @@ write_roots (pair_p variables, bool emit_pch)
fli->next = flp;
fli->started_p = 0;
fli->name = v->line.file;
gcc_assert(fli->name);
gcc_assert (fli->name);
flp = fli;
oprintf (f, "\n/* GC roots. */\n\n");
}
if (! deletable_p
if (!deletable_p
&& length
&& v->type->kind == TYPE_POINTER
&& (v->type->u.p->kind == TYPE_POINTER
......@@ -3534,7 +3518,7 @@ write_roots (pair_p variables, bool emit_pch)
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
if (!fli->started_p)
{
fli->started_p = 1;
......@@ -3568,7 +3552,7 @@ write_roots (pair_p variables, bool emit_pch)
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
if (!fli->started_p)
{
fli->started_p = 1;
......@@ -3605,14 +3589,15 @@ write_roots (pair_p variables, bool emit_pch)
|| v->type->u.p->kind != TYPE_PARAM_STRUCT
|| v->type->u.p->u.param_struct.stru != find_structure ("htab", 0))
{
error_at_line (&v->line, "if_marked option used but not hash table");
error_at_line (&v->line,
"if_marked option used but not hash table");
continue;
}
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
if (!fli->started_p)
{
fli->started_p = 1;
......@@ -3645,13 +3630,13 @@ write_roots (pair_p variables, bool emit_pch)
else if (strcmp (o->name, "if_marked") == 0)
if_marked_p = 1;
if (! if_marked_p)
if (!if_marked_p)
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
if (!fli->started_p)
{
fli->started_p = 1;
......@@ -3681,13 +3666,13 @@ write_roots (pair_p variables, bool emit_pch)
if (skip_p)
continue;
if (! contains_scalar_p (v->type))
if (!contains_scalar_p (v->type))
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
if (!fli->started_p)
{
fli->started_p = 1;
......@@ -3722,7 +3707,7 @@ note_def_vec (const char *type_name, bool is_scalar, struct fileloc *pos)
type_p t;
options_p o;
type_p len_ty = create_scalar_type ("unsigned");
const char *name = concat ("VEC_", type_name, "_base", (char *)0);
const char *name = concat ("VEC_", type_name, "_base", (char *) 0);
if (is_scalar)
{
......@@ -3753,8 +3738,8 @@ note_def_vec (const char *type_name, bool is_scalar, struct fileloc *pos)
void
note_def_vec_alloc (const char *type, const char *astrat, struct fileloc *pos)
{
const char *astratname = concat ("VEC_", type, "_", astrat, (char *)0);
const char *basename = concat ("VEC_", type, "_base", (char *)0);
const char *astratname = concat ("VEC_", type, "_", astrat, (char *) 0);
const char *basename = concat ("VEC_", type, "_base", (char *) 0);
pair_p field = create_field_at (0, resolve_typedef (basename, pos),
"base", 0, pos);
......@@ -3787,8 +3772,10 @@ variable_size_p (const type_p s)
return false;
}
enum alloc_quantity { single, vector };
enum alloc_zone { any_zone, specific_zone };
enum alloc_quantity
{ single, vector };
enum alloc_zone
{ any_zone, specific_zone };
/* Writes one typed allocator definition for type identifier TYPE_NAME with
optional type specifier TYPE_SPECIFIER. The allocator name will contain
......@@ -3798,15 +3785,15 @@ enum alloc_zone { any_zone, specific_zone };
the allocator will be zone-specific. */
static void
write_typed_alloc_def (bool variable_size, const char * type_specifier,
const char * type_name, const char * allocator_type,
write_typed_alloc_def (bool variable_size, const char *type_specifier,
const char *type_name, const char *allocator_type,
enum alloc_quantity quantity, enum alloc_zone zone)
{
bool two_args = variable_size && (quantity == vector);
bool third_arg = ((zone == specific_zone)
&& (variable_size || (quantity == vector)));
oprintf (header_file, "#define ggc_alloc_%s%s",allocator_type, type_name);
oprintf (header_file, "#define ggc_alloc_%s%s", allocator_type, type_name);
oprintf (header_file, "(%s%s%s%s%s) ",
(variable_size ? "SIZE" : ""),
(two_args ? ", " : ""),
......@@ -3828,7 +3815,7 @@ write_typed_alloc_def (bool variable_size, const char * type_specifier,
/* Writes a typed allocator definition for a struct or union S. */
static void
write_typed_struct_alloc_def (const type_p s, const char * allocator_type,
write_typed_struct_alloc_def (const type_p s, const char *allocator_type,
enum alloc_quantity quantity,
enum alloc_zone zone)
{
......@@ -3839,7 +3826,7 @@ write_typed_struct_alloc_def (const type_p s, const char * allocator_type,
/* Writes a typed allocator definition for a typedef P. */
static void
write_typed_typedef_alloc_def (const pair_p p, const char * allocator_type,
write_typed_typedef_alloc_def (const pair_p p, const char *allocator_type,
enum alloc_quantity quantity,
enum alloc_zone zone)
{
......@@ -3920,7 +3907,8 @@ output_typename (outf_p of, const_type_p t)
{
int i;
for (i = 0; i < NUM_PARAM; i++)
if (t->u.param_struct.param[i] != NULL) {
if (t->u.param_struct.param[i] != NULL)
{
output_typename (of, t->u.param_struct.param[i]);
oprintf (of, "_");
}
......@@ -3928,7 +3916,7 @@ output_typename (outf_p of, const_type_p t)
break;
}
default:
gcc_unreachable();
gcc_unreachable ();
}
}
......@@ -3938,7 +3926,7 @@ output_typename (outf_p of, const_type_p t)
static void
write_splay_tree_allocator_def (const_type_p s)
{
outf_p of = get_output_file_for_structure(s, NULL);
outf_p of = get_output_file_for_structure (s, NULL);
oprintf (of, "void * ggc_alloc_splay_tree_");
output_typename (of, s);
oprintf (of, " (int sz, void * nl)\n");
......@@ -3983,15 +3971,32 @@ dump_typekind (int indent, enum typekind kind)
printf ("%*ckind = ", indent, ' ');
switch (kind)
{
case TYPE_SCALAR: printf ("TYPE_SCALAR"); break;
case TYPE_STRING: printf ("TYPE_STRING"); break;
case TYPE_STRUCT: printf ("TYPE_STRUCT"); break;
case TYPE_UNION: printf ("TYPE_UNION"); break;
case TYPE_POINTER: printf ("TYPE_POINTER"); break;
case TYPE_ARRAY: printf ("TYPE_ARRAY"); break;
case TYPE_LANG_STRUCT: printf ("TYPE_LANG_STRUCT"); break;
case TYPE_PARAM_STRUCT: printf ("TYPE_PARAM_STRUCT"); break;
default: gcc_unreachable ();
case TYPE_SCALAR:
printf ("TYPE_SCALAR");
break;
case TYPE_STRING:
printf ("TYPE_STRING");
break;
case TYPE_STRUCT:
printf ("TYPE_STRUCT");
break;
case TYPE_UNION:
printf ("TYPE_UNION");
break;
case TYPE_POINTER:
printf ("TYPE_POINTER");
break;
case TYPE_ARRAY:
printf ("TYPE_ARRAY");
break;
case TYPE_LANG_STRUCT:
printf ("TYPE_LANG_STRUCT");
break;
case TYPE_PARAM_STRUCT:
printf ("TYPE_PARAM_STRUCT");
break;
default:
gcc_unreachable ();
}
printf ("\n");
}
......@@ -4004,11 +4009,20 @@ dump_gc_used (int indent, enum gc_used_enum gc_used)
printf ("%*cgc_used = ", indent, ' ');
switch (gc_used)
{
case GC_UNUSED: printf ("GC_UNUSED"); break;
case GC_USED: printf ("GC_USED"); break;
case GC_MAYBE_POINTED_TO: printf ("GC_MAYBE_POINTED_TO"); break;
case GC_POINTED_TO: printf ("GC_POINTED_TO"); break;
default: gcc_unreachable ();
case GC_UNUSED:
printf ("GC_UNUSED");
break;
case GC_USED:
printf ("GC_USED");
break;
case GC_MAYBE_POINTED_TO:
printf ("GC_MAYBE_POINTED_TO");
break;
case GC_POINTED_TO:
printf ("GC_POINTED_TO");
break;
default:
gcc_unreachable ();
}
printf ("\n");
}
......@@ -4118,7 +4132,7 @@ dump_type (int indent, type_p t)
{
PTR *slot;
printf ("%*cType at %p: ", indent, ' ', (void *)t);
printf ("%*cType at %p: ", indent, ' ', (void *) t);
slot = htab_find_slot (seen_types, t, INSERT);
if (*slot != NULL)
{
......@@ -4130,7 +4144,7 @@ dump_type (int indent, type_p t)
dump_typekind (indent, t->kind);
printf ("%*cpointer_to = %p\n", indent + INDENT, ' ',
(void *)t->pointer_to);
(void *) t->pointer_to);
dump_gc_used (indent + INDENT, t->gc_used);
switch (t->kind)
{
......@@ -4158,7 +4172,7 @@ dump_type (int indent, type_p t)
default:
gcc_unreachable ();
}
printf ("%*cEnd of type at %p\n", indent, ' ', (void *)t);
printf ("%*cEnd of type at %p\n", indent, ' ', (void *) t);
}
/* Dumps the pair P. */
......@@ -4176,7 +4190,7 @@ dump_pair (int indent, pair_p p)
/* Dumps the list of pairs PP. */
static void
dump_pair_list (const char * name, pair_p pp)
dump_pair_list (const char *name, pair_p pp)
{
pair_p p;
printf ("%s:\n", name);
......@@ -4188,7 +4202,7 @@ dump_pair_list (const char * name, pair_p pp)
/* Dumps the STRUCTURES. */
static void
dump_structures (const char * name, type_p structures)
dump_structures (const char *name, type_p structures)
{
printf ("%s:\n", name);
dump_type_list (0, structures);
......@@ -4214,10 +4228,10 @@ main (int argc, char **argv)
{
size_t i;
static struct fileloc pos = { this_file, 0 };
char* inputlist = 0;
char *inputlist = 0;
int do_dump = 0;
outf_p output_header;
char* plugin_output_filename = NULL;
char *plugin_output_filename = NULL;
/* fatal uses this */
progname = "gengtype";
......@@ -4241,7 +4255,7 @@ main (int argc, char **argv)
/* Place an all zero lang_bitmap before the plugin file
name. */
char *name = argv[i + 5];
int len = strlen(name) + 1 + sizeof (lang_bitmap);
int len = strlen (name) + 1 + sizeof (lang_bitmap);
plugin_files[i] = XCNEWVEC (char, len) + sizeof (lang_bitmap);
strcpy (plugin_files[i], name);
}
......@@ -4268,15 +4282,24 @@ main (int argc, char **argv)
/* These types are set up with #define or else outside of where
we can see them. */
pos.line = __LINE__ + 1;
do_scalar_typedef ("CUMULATIVE_ARGS", &pos); pos.line++;
do_scalar_typedef ("REAL_VALUE_TYPE", &pos); pos.line++;
do_scalar_typedef ("FIXED_VALUE_TYPE", &pos); pos.line++;
do_scalar_typedef ("double_int", &pos); pos.line++;
do_scalar_typedef ("uint64_t", &pos); pos.line++;
do_scalar_typedef ("uint8", &pos); pos.line++;
do_scalar_typedef ("jword", &pos); pos.line++;
do_scalar_typedef ("JCF_u2", &pos); pos.line++;
do_scalar_typedef ("void", &pos); pos.line++;
do_scalar_typedef ("CUMULATIVE_ARGS", &pos);
pos.line++;
do_scalar_typedef ("REAL_VALUE_TYPE", &pos);
pos.line++;
do_scalar_typedef ("FIXED_VALUE_TYPE", &pos);
pos.line++;
do_scalar_typedef ("double_int", &pos);
pos.line++;
do_scalar_typedef ("uint64_t", &pos);
pos.line++;
do_scalar_typedef ("uint8", &pos);
pos.line++;
do_scalar_typedef ("jword", &pos);
pos.line++;
do_scalar_typedef ("JCF_u2", &pos);
pos.line++;
do_scalar_typedef ("void", &pos);
pos.line++;
do_typedef ("PTR", create_pointer (resolve_typedef ("void", &pos)), &pos);
for (i = 0; i < num_gt_files; i++)
......
/* Process source files and output type information.
Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
This file is part of GCC.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#ifndef GCC_GENGTYPE_H
#define GCC_GENGTYPE_H
/* A file position, mostly for error messages.
The FILE element may be compared using pointer equality. */
struct fileloc {
struct fileloc
{
const char *file;
int line;
};
......@@ -39,10 +40,12 @@ extern struct fileloc lexer_line;
/* Print an error message. */
extern void error_at_line
(const struct fileloc *pos, const char *msg, ...) ATTRIBUTE_PRINTF_2;
(const struct fileloc *pos, const char *msg, ...) ATTRIBUTE_PRINTF_2;
/* Like asprintf, but calls fatal() on out of memory. */
extern char *xasprintf(const char *, ...) ATTRIBUTE_PRINTF_1;
extern char *
xasprintf (const char *, ...)
ATTRIBUTE_PRINTF_1;
/* Constructor routines for types. */
extern void do_typedef (const char *s, type_p t, struct fileloc *pos);
......@@ -55,11 +58,14 @@ extern type_p find_structure (const char *s, int isunion);
extern type_p create_scalar_type (const char *name);
extern type_p create_pointer (type_p t);
extern type_p create_array (type_p t, const char *len);
extern options_p create_option (options_p, const char *name, const void *info);
extern options_p create_option (options_p, const char *name,
const void *info);
extern options_p create_nested_ptr_option (options_p, type_p t,
const char *from, const char *to);
extern pair_p create_field_at (pair_p next, type_p type, const char *name,
options_p opt, struct fileloc *pos);
const char *from,
const char *to);
extern pair_p create_field_at (pair_p next, type_p type,
const char *name, options_p opt,
struct fileloc *pos);
extern pair_p nreverse_pairs (pair_p list);
extern type_p adjust_field_type (type_p, options_p);
extern void note_variable (const char *s, type_p t, options_p o,
......@@ -77,7 +83,8 @@ extern void parse_file (const char *name);
extern bool hit_error;
/* Token codes. */
enum {
enum
{
EOF_TOKEN = 0,
/* Per standard convention, codes in the range (0, UCHAR_MAX]
......@@ -109,5 +116,5 @@ enum {
/* print_token assumes that any token >= FIRST_TOKEN_WITH_VALUE may have
a meaningful value to be printed. */
FIRST_TOKEN_WITH_VALUE = PARAM_IS
};
};
#endif
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