alias.c (struct alias_set_entry_d): Rename from struct alias_set_entry.

gcc/ChangeLog:
	* alias.c (struct alias_set_entry_d): Rename from struct
	alias_set_entry.  Change all uses.
	* except.c (struct call_site_record_d): Rename from struct
	call_site_record.  Change all uses.
	* except.h (struct eh_region_d): Rename from struct eh_region.
	Change all uses.
	* gcse.c (struct hash_table_d): Rename from struct hash_table.
	Change all uses.
	* graphite.c (struct ivtype_map_elt_d): Rename fromstruct
	ivtype_map_elt.  Change all uses.
	(struct rename_map_elt_d): Rename fromstruct rename_map_elt.
	Change all uses.
	(struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
	* graphite.h (struct name_tree_d): Rename from struct name_tree.
	Change all uses.
	(struct sese_d): Rename from struct sese.  Change all uses.
	* omega.h (struct eqn_d): Rename from struct eqn.  Change all
	uses.
	(struct omega_pb_d): Rename from struct omega_pb.  Change all
	uses.
	* optabs.h (struct optab_d): Rename from struct optab.  Change all
	uses.
	(struct convert_optab_d): Rename from struct convert_optab.
	Change all uses.
	* tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
	ipa_opt_pass.  Change all uses.
	* tree-predcom.c (struct dref_d): Rename from struct dref.  Change
	all uses.

	* c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
	defined as a typedef.
	(grokdeclarator): If -Wc++-compat, warn if a typedef is already
	defined as a tag.
gcc/cp/ChangeLog:
	* cp-tree.h (enum cp_lvalue_kind_flags): Rename from
	cp_lvalue_kind.  Change all uses.
	(enum base_access_flags): Rename from enum base_access.  Change
	all uses.
	* parser.c (enum cp_parser_flags): Remove enum tag.
gcc/testsuite/ChangeLog:
	* gcc.dg/Wcxx-compat-10.c: New testcase.
libcpp/ChangeLog:
	* include/cpplib.h (enum cpp_builtin_type): Rename from enum
	builtin_type.  Change all uses.

From-SVN: r147605
This commit is contained in:
Ian Lance Taylor 2009-05-16 06:54:11 +00:00 committed by Ian Lance Taylor
parent 7d47ae1d64
commit 7e5487a214
30 changed files with 458 additions and 279 deletions

View File

@ -1,3 +1,39 @@
2009-05-15 Ian Lance Taylor <iant@google.com>
* alias.c (struct alias_set_entry_d): Rename from struct
alias_set_entry. Change all uses.
* except.c (struct call_site_record_d): Rename from struct
call_site_record. Change all uses.
* except.h (struct eh_region_d): Rename from struct eh_region.
Change all uses.
* gcse.c (struct hash_table_d): Rename from struct hash_table.
Change all uses.
* graphite.c (struct ivtype_map_elt_d): Rename fromstruct
ivtype_map_elt. Change all uses.
(struct rename_map_elt_d): Rename fromstruct rename_map_elt.
Change all uses.
(struct ifsese_d): Rename fromstruct ifsese. Change all uses.
* graphite.h (struct name_tree_d): Rename from struct name_tree.
Change all uses.
(struct sese_d): Rename from struct sese. Change all uses.
* omega.h (struct eqn_d): Rename from struct eqn. Change all
uses.
(struct omega_pb_d): Rename from struct omega_pb. Change all
uses.
* optabs.h (struct optab_d): Rename from struct optab. Change all
uses.
(struct convert_optab_d): Rename from struct convert_optab.
Change all uses.
* tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
ipa_opt_pass. Change all uses.
* tree-predcom.c (struct dref_d): Rename from struct dref. Change
all uses.
* c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
defined as a typedef.
(grokdeclarator): If -Wc++-compat, warn if a typedef is already
defined as a tag.
2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org> 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 16302 PR 16302

View File

@ -128,7 +128,7 @@ along with GCC; see the file COPYING3. If not see
However, this is no actual entry for alias set zero. It is an However, this is no actual entry for alias set zero. It is an
error to attempt to explicitly construct a subset of zero. */ error to attempt to explicitly construct a subset of zero. */
struct GTY(()) alias_set_entry { struct GTY(()) alias_set_entry_d {
/* The alias set number, as stored in MEM_ALIAS_SET. */ /* The alias set number, as stored in MEM_ALIAS_SET. */
alias_set_type alias_set; alias_set_type alias_set;
@ -145,7 +145,7 @@ struct GTY(()) alias_set_entry {
`int', `double', `float', and `struct S'. */ `int', `double', `float', and `struct S'. */
splay_tree GTY((param1_is (int), param2_is (int))) children; splay_tree GTY((param1_is (int), param2_is (int))) children;
}; };
typedef struct alias_set_entry *alias_set_entry; typedef struct alias_set_entry_d *alias_set_entry;
static int rtx_equal_for_memref_p (const_rtx, const_rtx); static int rtx_equal_for_memref_p (const_rtx, const_rtx);
static int memrefs_conflict_p (int, rtx, int, rtx, HOST_WIDE_INT); static int memrefs_conflict_p (int, rtx, int, rtx, HOST_WIDE_INT);
@ -791,7 +791,7 @@ record_alias_subset (alias_set_type superset, alias_set_type subset)
{ {
/* Create an entry for the SUPERSET, so that we have a place to /* Create an entry for the SUPERSET, so that we have a place to
attach the SUBSET. */ attach the SUBSET. */
superset_entry = GGC_NEW (struct alias_set_entry); superset_entry = GGC_NEW (struct alias_set_entry_d);
superset_entry->alias_set = superset; superset_entry->alias_set = superset;
superset_entry->children superset_entry->children
= splay_tree_new_ggc (splay_tree_compare_ints); = splay_tree_new_ggc (splay_tree_compare_ints);

View File

@ -1114,6 +1114,27 @@ pushtag (tree name, tree type, location_t loc)
/* An approximation for now, so we can tell this is a function-scope tag. /* An approximation for now, so we can tell this is a function-scope tag.
This will be updated in pop_scope. */ This will be updated in pop_scope. */
TYPE_CONTEXT (type) = DECL_CONTEXT (TYPE_STUB_DECL (type)); TYPE_CONTEXT (type) = DECL_CONTEXT (TYPE_STUB_DECL (type));
if (warn_cxx_compat && name != NULL_TREE)
{
struct c_binding *b = I_SYMBOL_BINDING (name);
if (b != NULL
&& b->decl != NULL_TREE
&& TREE_CODE (b->decl) == TYPE_DECL
&& (B_IN_CURRENT_SCOPE (b)
|| (current_scope == file_scope && B_IN_EXTERNAL_SCOPE (b)))
&& (TYPE_MAIN_VARIANT (TREE_TYPE (b->decl))
!= TYPE_MAIN_VARIANT (type)))
{
warning_at (loc, OPT_Wc___compat,
("using %qD as both a typedef and a tag is "
"invalid in C++"),
b->decl);
if (b->locus != UNKNOWN_LOCATION)
inform (b->locus, "originally defined here");
}
}
} }
/* Subroutine of compare_decls. Allow harmless mismatches in return /* Subroutine of compare_decls. Allow harmless mismatches in return
@ -4961,6 +4982,26 @@ grokdeclarator (const struct c_declarator *declarator,
C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1; C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1;
if (declspecs->inline_p) if (declspecs->inline_p)
pedwarn (input_location, 0,"typedef %q+D declared %<inline%>", decl); pedwarn (input_location, 0,"typedef %q+D declared %<inline%>", decl);
if (warn_cxx_compat && declarator->u.id != NULL_TREE)
{
struct c_binding *b = I_TAG_BINDING (declarator->u.id);
if (b != NULL
&& b->decl != NULL_TREE
&& (B_IN_CURRENT_SCOPE (b)
|| (current_scope == file_scope && B_IN_EXTERNAL_SCOPE (b)))
&& TYPE_MAIN_VARIANT (b->decl) != TYPE_MAIN_VARIANT (type))
{
warning_at (declarator->id_loc, OPT_Wc___compat,
("using %qD as both a typedef and a tag is "
"invalid in C++"),
decl);
if (b->locus != UNKNOWN_LOCATION)
inform (b->locus, "originally defined here");
}
}
return decl; return decl;
} }

View File

@ -1,3 +1,11 @@
2009-05-15 Ian Lance Taylor <iant@google.com>
* cp-tree.h (enum cp_lvalue_kind_flags): Rename from
cp_lvalue_kind. Change all uses.
(enum base_access_flags): Rename from enum base_access. Change
all uses.
* parser.c (enum cp_parser_flags): Remove enum tag.
2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org> 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 16302 PR 16302

View File

@ -3466,7 +3466,7 @@ enum tag_types {
}; };
/* The various kinds of lvalues we distinguish. */ /* The various kinds of lvalues we distinguish. */
enum cp_lvalue_kind { enum cp_lvalue_kind_flags {
clk_none = 0, /* Things that are not an lvalue. */ clk_none = 0, /* Things that are not an lvalue. */
clk_ordinary = 1, /* An ordinary lvalue. */ clk_ordinary = 1, /* An ordinary lvalue. */
clk_class = 2, /* An rvalue of class-type. */ clk_class = 2, /* An rvalue of class-type. */
@ -3475,7 +3475,7 @@ enum cp_lvalue_kind {
}; };
/* This type is used for parameters and variables which hold /* This type is used for parameters and variables which hold
combinations of the flags in enum cp_lvalue_kind. */ combinations of the flags in enum cp_lvalue_kind_flags. */
typedef int cp_lvalue_kind; typedef int cp_lvalue_kind;
/* Various kinds of template specialization, instantiation, etc. */ /* Various kinds of template specialization, instantiation, etc. */
@ -3575,7 +3575,7 @@ enum tsubst_flags {
typedef int tsubst_flags_t; typedef int tsubst_flags_t;
/* The kind of checking we can do looking in a class hierarchy. */ /* The kind of checking we can do looking in a class hierarchy. */
enum base_access { enum base_access_flags {
ba_any = 0, /* Do not check access, allow an ambiguous base, ba_any = 0, /* Do not check access, allow an ambiguous base,
prefer a non-virtual base */ prefer a non-virtual base */
ba_unique = 1 << 0, /* Must be a unique base. */ ba_unique = 1 << 0, /* Must be a unique base. */
@ -3586,7 +3586,7 @@ enum base_access {
}; };
/* This type is used for parameters and variables which hold /* This type is used for parameters and variables which hold
combinations of the flags in enum base_access. */ combinations of the flags in enum base_access_flags. */
typedef int base_access; typedef int base_access;
/* The various kinds of access check during parsing. */ /* The various kinds of access check during parsing. */

View File

@ -1183,7 +1183,7 @@ function_declarator_p (const cp_declarator *declarator)
/* Flags that are passed to some parsing functions. These values can /* Flags that are passed to some parsing functions. These values can
be bitwise-ored together. */ be bitwise-ored together. */
enum cp_parser_flags enum
{ {
/* No flags. */ /* No flags. */
CP_PARSER_FLAGS_NONE = 0x0, CP_PARSER_FLAGS_NONE = 0x0,
@ -1195,7 +1195,7 @@ enum cp_parser_flags
}; };
/* This type is used for parameters and variables which hold /* This type is used for parameters and variables which hold
combinations of the flags in enum cp_parser_flags. */ combinations of the above flags. */
typedef int cp_parser_flags; typedef int cp_parser_flags;
/* The different kinds of declarators we want to parse. */ /* The different kinds of declarators we want to parse. */

View File

@ -99,7 +99,7 @@ tree (*lang_eh_runtime_type) (tree);
struct GTY(()) ehl_map_entry { struct GTY(()) ehl_map_entry {
rtx label; rtx label;
struct eh_region *region; struct eh_region_d *region;
}; };
static GTY(()) int call_site_base; static GTY(()) int call_site_base;
@ -115,7 +115,7 @@ static int sjlj_fc_lsda_ofs;
static int sjlj_fc_jbuf_ofs; static int sjlj_fc_jbuf_ofs;
struct GTY(()) call_site_record struct GTY(()) call_site_record_d
{ {
rtx landing_pad; rtx landing_pad;
int action; int action;
@ -144,9 +144,9 @@ static void sjlj_emit_function_exit (void);
static void sjlj_emit_dispatch_table (rtx, struct sjlj_lp_info *); static void sjlj_emit_dispatch_table (rtx, struct sjlj_lp_info *);
static void sjlj_build_landing_pads (void); static void sjlj_build_landing_pads (void);
static void remove_eh_handler (struct eh_region *); static void remove_eh_handler (struct eh_region_d *);
static void remove_eh_handler_and_replace (struct eh_region *, static void remove_eh_handler_and_replace (struct eh_region_d *,
struct eh_region *, bool); struct eh_region_d *, bool);
/* The return value of reachable_next_level. */ /* The return value of reachable_next_level. */
enum reachable_code enum reachable_code
@ -162,13 +162,13 @@ enum reachable_code
}; };
struct reachable_info; struct reachable_info;
static enum reachable_code reachable_next_level (struct eh_region *, tree, static enum reachable_code reachable_next_level (struct eh_region_d *, tree,
struct reachable_info *, bool); struct reachable_info *, bool);
static int action_record_eq (const void *, const void *); static int action_record_eq (const void *, const void *);
static hashval_t action_record_hash (const void *); static hashval_t action_record_hash (const void *);
static int add_action_record (htab_t, int, int); static int add_action_record (htab_t, int, int);
static int collect_one_action_chain (htab_t, struct eh_region *); static int collect_one_action_chain (htab_t, struct eh_region_d *);
static int add_call_site (rtx, int); static int add_call_site (rtx, int);
static void push_uleb128 (varray_type *, unsigned int); static void push_uleb128 (varray_type *, unsigned int);
@ -308,17 +308,17 @@ init_eh_for_function (void)
These are used from tree-eh.c when processing exception related These are used from tree-eh.c when processing exception related
nodes during tree optimization. */ nodes during tree optimization. */
static struct eh_region * static struct eh_region_d *
gen_eh_region (enum eh_region_type type, struct eh_region *outer) gen_eh_region (enum eh_region_type type, struct eh_region_d *outer)
{ {
struct eh_region *new_eh; struct eh_region_d *new_eh;
#ifdef ENABLE_CHECKING #ifdef ENABLE_CHECKING
gcc_assert (doing_eh (0)); gcc_assert (doing_eh (0));
#endif #endif
/* Insert a new blank region as a leaf in the tree. */ /* Insert a new blank region as a leaf in the tree. */
new_eh = GGC_CNEW (struct eh_region); new_eh = GGC_CNEW (struct eh_region_d);
new_eh->type = type; new_eh->type = type;
new_eh->outer = outer; new_eh->outer = outer;
if (outer) if (outer)
@ -337,23 +337,23 @@ gen_eh_region (enum eh_region_type type, struct eh_region *outer)
return new_eh; return new_eh;
} }
struct eh_region * struct eh_region_d *
gen_eh_region_cleanup (struct eh_region *outer) gen_eh_region_cleanup (struct eh_region_d *outer)
{ {
struct eh_region *cleanup = gen_eh_region (ERT_CLEANUP, outer); struct eh_region_d *cleanup = gen_eh_region (ERT_CLEANUP, outer);
return cleanup; return cleanup;
} }
struct eh_region * struct eh_region_d *
gen_eh_region_try (struct eh_region *outer) gen_eh_region_try (struct eh_region_d *outer)
{ {
return gen_eh_region (ERT_TRY, outer); return gen_eh_region (ERT_TRY, outer);
} }
struct eh_region * struct eh_region_d *
gen_eh_region_catch (struct eh_region *t, tree type_or_list) gen_eh_region_catch (struct eh_region_d *t, tree type_or_list)
{ {
struct eh_region *c, *l; struct eh_region_d *c, *l;
tree type_list, type_node; tree type_list, type_node;
/* Ensure to always end up with a type list to normalize further /* Ensure to always end up with a type list to normalize further
@ -382,10 +382,10 @@ gen_eh_region_catch (struct eh_region *t, tree type_or_list)
return c; return c;
} }
struct eh_region * struct eh_region_d *
gen_eh_region_allowed (struct eh_region *outer, tree allowed) gen_eh_region_allowed (struct eh_region_d *outer, tree allowed)
{ {
struct eh_region *region = gen_eh_region (ERT_ALLOWED_EXCEPTIONS, outer); struct eh_region_d *region = gen_eh_region (ERT_ALLOWED_EXCEPTIONS, outer);
region->u.allowed.type_list = allowed; region->u.allowed.type_list = allowed;
for (; allowed ; allowed = TREE_CHAIN (allowed)) for (; allowed ; allowed = TREE_CHAIN (allowed))
@ -394,26 +394,26 @@ gen_eh_region_allowed (struct eh_region *outer, tree allowed)
return region; return region;
} }
struct eh_region * struct eh_region_d *
gen_eh_region_must_not_throw (struct eh_region *outer) gen_eh_region_must_not_throw (struct eh_region_d *outer)
{ {
return gen_eh_region (ERT_MUST_NOT_THROW, outer); return gen_eh_region (ERT_MUST_NOT_THROW, outer);
} }
int int
get_eh_region_number (struct eh_region *region) get_eh_region_number (struct eh_region_d *region)
{ {
return region->region_number; return region->region_number;
} }
bool bool
get_eh_region_may_contain_throw (struct eh_region *region) get_eh_region_may_contain_throw (struct eh_region_d *region)
{ {
return region->may_contain_throw; return region->may_contain_throw;
} }
tree tree
get_eh_region_tree_label (struct eh_region *region) get_eh_region_tree_label (struct eh_region_d *region)
{ {
return region->tree_label; return region->tree_label;
} }
@ -425,7 +425,7 @@ get_eh_region_no_tree_label (int region)
} }
void void
set_eh_region_tree_label (struct eh_region *region, tree lab) set_eh_region_tree_label (struct eh_region_d *region, tree lab)
{ {
region->tree_label = lab; region->tree_label = lab;
} }
@ -434,8 +434,8 @@ void
expand_resx_expr (tree exp) expand_resx_expr (tree exp)
{ {
int region_nr = TREE_INT_CST_LOW (TREE_OPERAND (exp, 0)); int region_nr = TREE_INT_CST_LOW (TREE_OPERAND (exp, 0));
struct eh_region *reg = VEC_index (eh_region, struct eh_region_d *reg = VEC_index (eh_region,
cfun->eh->region_array, region_nr); cfun->eh->region_array, region_nr);
gcc_assert (!reg->resume); gcc_assert (!reg->resume);
do_pending_stack_adjust (); do_pending_stack_adjust ();
@ -447,7 +447,7 @@ expand_resx_expr (tree exp)
call to a function which itself may contain a throw. */ call to a function which itself may contain a throw. */
void void
note_eh_region_may_contain_throw (struct eh_region *region) note_eh_region_may_contain_throw (struct eh_region_d *region)
{ {
while (region && !region->may_contain_throw) while (region && !region->may_contain_throw)
{ {
@ -486,7 +486,7 @@ get_exception_filter (void)
void void
collect_eh_region_array (void) collect_eh_region_array (void)
{ {
struct eh_region *i; struct eh_region_d *i;
i = cfun->eh->region_tree; i = cfun->eh->region_tree;
if (! i) if (! i)
@ -538,9 +538,9 @@ collect_eh_region_array (void)
a problem. */ a problem. */
static bool static bool
can_be_reached_by_runtime (sbitmap contains_stmt, struct eh_region *r) can_be_reached_by_runtime (sbitmap contains_stmt, struct eh_region_d *r)
{ {
struct eh_region *i = r->inner; struct eh_region_d *i = r->inner;
unsigned n; unsigned n;
bitmap_iterator bi; bitmap_iterator bi;
@ -574,7 +574,7 @@ can_be_reached_by_runtime (sbitmap contains_stmt, struct eh_region *r)
firest place. */ firest place. */
if (found) if (found)
{ {
struct eh_region *i1 = i; struct eh_region_d *i1 = i;
tree type_thrown = NULL_TREE; tree type_thrown = NULL_TREE;
if (i1->type == ERT_THROW) if (i1->type == ERT_THROW)
@ -614,10 +614,10 @@ can_be_reached_by_runtime (sbitmap contains_stmt, struct eh_region *r)
/* Bring region R to the root of tree. */ /* Bring region R to the root of tree. */
static void static void
bring_to_root (struct eh_region *r) bring_to_root (struct eh_region_d *r)
{ {
struct eh_region **pp; struct eh_region_d **pp;
struct eh_region *outer = r->outer; struct eh_region_d *outer = r->outer;
if (!r->outer) if (!r->outer)
return; return;
for (pp = &outer->inner; *pp != r; pp = &(*pp)->next_peer) for (pp = &outer->inner; *pp != r; pp = &(*pp)->next_peer)
@ -631,8 +631,8 @@ bring_to_root (struct eh_region *r)
/* Return true if region R2 can be replaced by R1. */ /* Return true if region R2 can be replaced by R1. */
static bool static bool
eh_region_replaceable_by_p (const struct eh_region *r1, eh_region_replaceable_by_p (const struct eh_region_d *r1,
const struct eh_region *r2) const struct eh_region_d *r2)
{ {
/* Regions are semantically same if they are of same type, /* Regions are semantically same if they are of same type,
have same label and type. */ have same label and type. */
@ -649,7 +649,7 @@ eh_region_replaceable_by_p (const struct eh_region *r1,
break; break;
case ERT_TRY: case ERT_TRY:
{ {
struct eh_region *c1, *c2; struct eh_region_d *c1, *c2;
for (c1 = r1->u.eh_try.eh_catch, for (c1 = r1->u.eh_try.eh_catch,
c2 = r2->u.eh_try.eh_catch; c2 = r2->u.eh_try.eh_catch;
c1 && c2; c1 && c2;
@ -690,10 +690,10 @@ eh_region_replaceable_by_p (const struct eh_region *r1,
/* Replace region R2 by R1. */ /* Replace region R2 by R1. */
static void static void
replace_region (struct eh_region *r1, struct eh_region *r2) replace_region (struct eh_region_d *r1, struct eh_region_d *r2)
{ {
struct eh_region *next1 = r1->u.eh_try.eh_catch; struct eh_region_d *next1 = r1->u.eh_try.eh_catch;
struct eh_region *next2 = r2->u.eh_try.eh_catch; struct eh_region_d *next2 = r2->u.eh_try.eh_catch;
bool is_try = r1->type == ERT_TRY; bool is_try = r1->type == ERT_TRY;
gcc_assert (r1->type != ERT_CATCH); gcc_assert (r1->type != ERT_CATCH);
@ -729,7 +729,7 @@ hash_type_list (tree t)
static hashval_t static hashval_t
hash_eh_region (const void *r) hash_eh_region (const void *r)
{ {
const struct eh_region *region = (const struct eh_region *)r; const struct eh_region_d *region = (const struct eh_region_d *) r;
hashval_t val = region->type; hashval_t val = region->type;
if (region->tree_label) if (region->tree_label)
@ -741,7 +741,7 @@ hash_eh_region (const void *r)
break; break;
case ERT_TRY: case ERT_TRY:
{ {
struct eh_region *c; struct eh_region_d *c;
for (c = region->u.eh_try.eh_catch; for (c = region->u.eh_try.eh_catch;
c; c = c->u.eh_catch.next_catch) c; c = c->u.eh_catch.next_catch)
val = iterative_hash_hashval_t (hash_eh_region (c), val); val = iterative_hash_hashval_t (hash_eh_region (c), val);
@ -770,8 +770,8 @@ hash_eh_region (const void *r)
static int static int
eh_regions_equal_p (const void *r1, const void *r2) eh_regions_equal_p (const void *r1, const void *r2)
{ {
return eh_region_replaceable_by_p ((const struct eh_region *)r1, return eh_region_replaceable_by_p ((const struct eh_region_d *) r1,
(const struct eh_region *)r2); (const struct eh_region_d *) r2);
} }
/* Walk all peers of REGION and try to merge those regions /* Walk all peers of REGION and try to merge those regions
@ -779,9 +779,9 @@ eh_regions_equal_p (const void *r1, const void *r2)
recursively too. */ recursively too. */
static bool static bool
merge_peers (struct eh_region *region) merge_peers (struct eh_region_d *region)
{ {
struct eh_region *r1, *r2, *outer = NULL, *next; struct eh_region_d *r1, *r2, *outer = NULL, *next;
bool merged = false; bool merged = false;
int num_regions = 0; int num_regions = 0;
if (region) if (region)
@ -851,7 +851,7 @@ merge_peers (struct eh_region *region)
if (!*slot) if (!*slot)
*slot = r1; *slot = r1;
else else
replace_region ((struct eh_region *)*slot, r1); replace_region ((struct eh_region_d *) *slot, r1);
} }
htab_delete (hash); htab_delete (hash);
} }
@ -868,10 +868,10 @@ void
remove_unreachable_regions (sbitmap reachable, sbitmap contains_stmt) remove_unreachable_regions (sbitmap reachable, sbitmap contains_stmt)
{ {
int i; int i;
struct eh_region *r; struct eh_region_d *r;
VEC(eh_region,heap) *must_not_throws = VEC_alloc (eh_region, heap, 16); VEC(eh_region,heap) *must_not_throws = VEC_alloc (eh_region, heap, 16);
struct eh_region *local_must_not_throw = NULL; struct eh_region_d *local_must_not_throw = NULL;
struct eh_region *first_must_not_throw = NULL; struct eh_region_d *first_must_not_throw = NULL;
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
@ -907,7 +907,7 @@ remove_unreachable_regions (sbitmap reachable, sbitmap contains_stmt)
{ {
/* TRY regions are reachable if any of its CATCH regions /* TRY regions are reachable if any of its CATCH regions
are reachable. */ are reachable. */
struct eh_region *c; struct eh_region_d *c;
for (c = r->u.eh_try.eh_catch; c; for (c = r->u.eh_try.eh_catch; c;
c = c->u.eh_catch.next_catch) c = c->u.eh_catch.next_catch)
if (TEST_BIT (reachable, c->region_number)) if (TEST_BIT (reachable, c->region_number))
@ -1001,7 +1001,7 @@ label_to_region_map (void)
cfun->cfg->last_label_uid + 1); cfun->cfg->last_label_uid + 1);
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *r = VEC_index (eh_region, cfun->eh->region_array, i); struct eh_region_d *r = VEC_index (eh_region, cfun->eh->region_array, i);
if (r && r->region_number == i if (r && r->region_number == i
&& r->tree_label && LABEL_DECL_UID (r->tree_label) >= 0) && r->tree_label && LABEL_DECL_UID (r->tree_label) >= 0)
{ {
@ -1030,7 +1030,7 @@ num_eh_regions (void)
int int
get_next_region_sharing_label (int region) get_next_region_sharing_label (int region)
{ {
struct eh_region *r; struct eh_region_d *r;
if (!region) if (!region)
return 0; return 0;
r = VEC_index (eh_region, cfun->eh->region_array, region); r = VEC_index (eh_region, cfun->eh->region_array, region);
@ -1052,7 +1052,7 @@ convert_from_eh_region_ranges (void)
we allocated earlier. */ we allocated earlier. */
for (i = 1; i <= n; ++i) for (i = 1; i <= n; ++i)
{ {
struct eh_region *region; struct eh_region_d *region;
region = VEC_index (eh_region, cfun->eh->region_array, i); region = VEC_index (eh_region, cfun->eh->region_array, i);
if (region && region->tree_label) if (region && region->tree_label)
@ -1070,7 +1070,7 @@ find_exception_handler_labels (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *region; struct eh_region_d *region;
rtx lab; rtx lab;
region = VEC_index (eh_region, cfun->eh->region_array, i); region = VEC_index (eh_region, cfun->eh->region_array, i);
@ -1092,7 +1092,7 @@ current_function_has_exception_handlers (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *region; struct eh_region_d *region;
region = VEC_index (eh_region, cfun->eh->region_array, i); region = VEC_index (eh_region, cfun->eh->region_array, i);
if (region if (region
@ -1147,7 +1147,7 @@ duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset)
{ {
eh_region ret, n; eh_region ret, n;
ret = n = GGC_NEW (struct eh_region); ret = n = GGC_NEW (struct eh_region_d);
*n = *old; *n = *old;
n->outer = outer; n->outer = outer;
@ -1185,8 +1185,8 @@ duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset)
/* Look for first outer region of R (or R itself) that is /* Look for first outer region of R (or R itself) that is
TRY region. Return NULL if none. */ TRY region. Return NULL if none. */
static struct eh_region * static struct eh_region_d *
find_prev_try (struct eh_region * r) find_prev_try (struct eh_region_d * r)
{ {
for (; r && r->type != ERT_TRY; r = r->outer) for (; r && r->type != ERT_TRY; r = r->outer)
if (r->type == ERT_MUST_NOT_THROW if (r->type == ERT_MUST_NOT_THROW
@ -1361,10 +1361,10 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
/* Return new copy of eh region OLD inside region NEW_OUTER. /* Return new copy of eh region OLD inside region NEW_OUTER.
Do not care about updating the tree otherwise. */ Do not care about updating the tree otherwise. */
static struct eh_region * static struct eh_region_d *
copy_eh_region_1 (struct eh_region *old, struct eh_region *new_outer) copy_eh_region_1 (struct eh_region_d *old, struct eh_region_d *new_outer)
{ {
struct eh_region *new_eh = gen_eh_region (old->type, new_outer); struct eh_region_d *new_eh = gen_eh_region (old->type, new_outer);
new_eh->u = old->u; new_eh->u = old->u;
new_eh->tree_label = old->tree_label; new_eh->tree_label = old->tree_label;
new_eh->may_contain_throw = old->may_contain_throw; new_eh->may_contain_throw = old->may_contain_throw;
@ -1380,10 +1380,10 @@ copy_eh_region_1 (struct eh_region *old, struct eh_region *new_outer)
Copy whole catch-try chain if neccesary. */ Copy whole catch-try chain if neccesary. */
static struct eh_region * static struct eh_region_d *
copy_eh_region (struct eh_region *old, struct eh_region *new_outer) copy_eh_region (struct eh_region_d *old, struct eh_region_d *new_outer)
{ {
struct eh_region *r, *n, *old_try, *new_try, *ret = NULL; struct eh_region_d *r, *n, *old_try, *new_try, *ret = NULL;
VEC(eh_region,heap) *catch_list = NULL; VEC(eh_region,heap) *catch_list = NULL;
if (old->type != ERT_CATCH) if (old->type != ERT_CATCH)
@ -1438,7 +1438,7 @@ copy_eh_region (struct eh_region *old, struct eh_region *new_outer)
/* Callback for forach_reachable_handler that push REGION into single VECtor DATA. */ /* Callback for forach_reachable_handler that push REGION into single VECtor DATA. */
static void static void
push_reachable_handler (struct eh_region *region, void *data) push_reachable_handler (struct eh_region_d *region, void *data)
{ {
VEC(eh_region,heap) **trace = (VEC(eh_region,heap) **) data; VEC(eh_region,heap) **trace = (VEC(eh_region,heap) **) data;
VEC_safe_push (eh_region, heap, *trace, region); VEC_safe_push (eh_region, heap, *trace, region);
@ -1448,17 +1448,17 @@ push_reachable_handler (struct eh_region *region, void *data)
IS_RESX, INLINABLE_CALL and REGION_NMUBER match the parameter of IS_RESX, INLINABLE_CALL and REGION_NMUBER match the parameter of
foreach_reachable_handler. */ foreach_reachable_handler. */
struct eh_region * struct eh_region_d *
redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx, redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx,
bool inlinable_call, int region_number) bool inlinable_call, int region_number)
{ {
struct eh_region *outer; struct eh_region_d *outer;
struct eh_region *region; struct eh_region_d *region;
VEC (eh_region, heap) * trace = NULL; VEC (eh_region, heap) * trace = NULL;
int i; int i;
int start_here = -1; int start_here = -1;
basic_block old_bb = e->dest; basic_block old_bb = e->dest;
struct eh_region *old, *r = NULL; struct eh_region_d *old, *r = NULL;
bool update_inplace = true; bool update_inplace = true;
edge_iterator ei; edge_iterator ei;
edge e2; edge e2;
@ -1584,7 +1584,7 @@ redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx,
int int
eh_region_outermost (struct function *ifun, int region_a, int region_b) eh_region_outermost (struct function *ifun, int region_a, int region_b)
{ {
struct eh_region *rp_a, *rp_b; struct eh_region_d *rp_a, *rp_b;
sbitmap b_outer; sbitmap b_outer;
gcc_assert (ifun->eh->last_region_number > 0); gcc_assert (ifun->eh->last_region_number > 0);
@ -1810,7 +1810,7 @@ assign_filter_values (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *r; struct eh_region_d *r;
r = VEC_index (eh_region, cfun->eh->region_array, i); r = VEC_index (eh_region, cfun->eh->region_array, i);
@ -1905,7 +1905,7 @@ build_post_landing_pads (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *region; struct eh_region_d *region;
rtx seq; rtx seq;
region = VEC_index (eh_region, cfun->eh->region_array, i); region = VEC_index (eh_region, cfun->eh->region_array, i);
@ -1938,7 +1938,7 @@ build_post_landing_pads (void)
switch statement generation code in expand_end_case. switch statement generation code in expand_end_case.
Rapid prototyping sez a sequence of ifs. */ Rapid prototyping sez a sequence of ifs. */
{ {
struct eh_region *c; struct eh_region_d *c;
for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch) for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch)
{ {
if (c->u.eh_catch.type_list == NULL) if (c->u.eh_catch.type_list == NULL)
@ -2033,8 +2033,8 @@ connect_post_landing_pads (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *region; struct eh_region_d *region;
struct eh_region *outer; struct eh_region_d *outer;
rtx seq; rtx seq;
rtx barrier; rtx barrier;
@ -2110,7 +2110,7 @@ dw2_build_landing_pads (void)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
{ {
struct eh_region *region; struct eh_region_d *region;
rtx seq; rtx seq;
basic_block bb; basic_block bb;
edge e; edge e;
@ -2178,7 +2178,7 @@ sjlj_find_directly_reachable_regions (struct sjlj_lp_info *lp_info)
for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
{ {
struct eh_region *region; struct eh_region_d *region;
enum reachable_code rc; enum reachable_code rc;
tree type_thrown; tree type_thrown;
rtx note; rtx note;
@ -2234,7 +2234,8 @@ sjlj_assign_call_site_values (rtx dispatch_label, struct sjlj_lp_info *lp_info)
for (i = cfun->eh->last_region_number; i > 0; --i) for (i = cfun->eh->last_region_number; i > 0; --i)
if (lp_info[i].directly_reachable) if (lp_info[i].directly_reachable)
{ {
struct eh_region *r = VEC_index (eh_region, cfun->eh->region_array, i); struct eh_region_d *r =
VEC_index (eh_region, cfun->eh->region_array, i);
r->landing_pad = dispatch_label; r->landing_pad = dispatch_label;
lp_info[i].action_index = collect_one_action_chain (ar_hash, r); lp_info[i].action_index = collect_one_action_chain (ar_hash, r);
@ -2291,7 +2292,7 @@ sjlj_mark_call_sites (struct sjlj_lp_info *lp_info)
for (insn = get_insns (); insn ; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
{ {
struct eh_region *region; struct eh_region_d *region;
int this_call_site; int this_call_site;
rtx note, before, p; rtx note, before, p;
@ -2518,14 +2519,17 @@ sjlj_emit_dispatch_table (rtx dispatch_label, struct sjlj_lp_info *lp_info)
emit_cmp_and_jump_insns (dispatch, GEN_INT (lp_info[i].dispatch_index), emit_cmp_and_jump_insns (dispatch, GEN_INT (lp_info[i].dispatch_index),
EQ, NULL_RTX, TYPE_MODE (integer_type_node), 0, EQ, NULL_RTX, TYPE_MODE (integer_type_node), 0,
((struct eh_region *)VEC_index (eh_region, cfun->eh->region_array, i)) (((struct eh_region_d *)
->post_landing_pad); VEC_index (eh_region,
cfun->eh->region_array, i))
->post_landing_pad));
} }
seq = get_insns (); seq = get_insns ();
end_sequence (); end_sequence ();
before = (((struct eh_region *)VEC_index (eh_region, cfun->eh->region_array, first_reachable)) before = (((struct eh_region_d *)
VEC_index (eh_region, cfun->eh->region_array, first_reachable))
->post_landing_pad); ->post_landing_pad);
bb = emit_to_new_bb_before (seq, before); bb = emit_to_new_bb_before (seq, before);
@ -2636,11 +2640,11 @@ finish_eh_generation (void)
region.*/ region.*/
static void static void
remove_eh_handler_and_replace (struct eh_region *region, remove_eh_handler_and_replace (struct eh_region_d *region,
struct eh_region *replace, struct eh_region_d *replace,
bool update_catch_try) bool update_catch_try)
{ {
struct eh_region **pp, **pp_start, *p, *outer, *inner; struct eh_region_d **pp, **pp_start, *p, *outer, *inner;
rtx lab; rtx lab;
outer = region->outer; outer = region->outer;
@ -2703,7 +2707,7 @@ remove_eh_handler_and_replace (struct eh_region *region,
if (region->type == ERT_CATCH if (region->type == ERT_CATCH
&& update_catch_try) && update_catch_try)
{ {
struct eh_region *eh_try, *next, *prev; struct eh_region_d *eh_try, *next, *prev;
for (eh_try = region->next_peer; for (eh_try = region->next_peer;
eh_try->type == ERT_CATCH; eh_try->type == ERT_CATCH;
@ -2733,7 +2737,7 @@ remove_eh_handler_and_replace (struct eh_region *region,
etc. */ etc. */
static void static void
remove_eh_handler (struct eh_region *region) remove_eh_handler (struct eh_region_d *region)
{ {
remove_eh_handler_and_replace (region, region->outer, true); remove_eh_handler_and_replace (region, region->outer, true);
} }
@ -2743,7 +2747,7 @@ remove_eh_handler (struct eh_region *region)
void void
remove_eh_region (int r) remove_eh_region (int r)
{ {
struct eh_region *region; struct eh_region_d *region;
region = VEC_index (eh_region, cfun->eh->region_array, r); region = VEC_index (eh_region, cfun->eh->region_array, r);
remove_eh_handler (region); remove_eh_handler (region);
@ -2755,7 +2759,7 @@ remove_eh_region (int r)
void void
remove_eh_region_and_replace_by_outer_of (int r, int r2) remove_eh_region_and_replace_by_outer_of (int r, int r2)
{ {
struct eh_region *region, *region2; struct eh_region_d *region, *region2;
region = VEC_index (eh_region, cfun->eh->region_array, r); region = VEC_index (eh_region, cfun->eh->region_array, r);
region2 = VEC_index (eh_region, cfun->eh->region_array, r2); region2 = VEC_index (eh_region, cfun->eh->region_array, r2);
@ -2771,7 +2775,7 @@ for_each_eh_label (void (*callback) (rtx))
int i; int i;
for (i = 0; i < cfun->eh->last_region_number; i++) for (i = 0; i < cfun->eh->last_region_number; i++)
{ {
struct eh_region *r = VEC_index (eh_region, cfun->eh->region_array, i); struct eh_region_d *r = VEC_index (eh_region, cfun->eh->region_array, i);
if (r && r->region_number == i && r->label if (r && r->region_number == i && r->label
&& GET_CODE (r->label) == CODE_LABEL) && GET_CODE (r->label) == CODE_LABEL)
(*callback) (r->label); (*callback) (r->label);
@ -2781,12 +2785,12 @@ for_each_eh_label (void (*callback) (rtx))
/* Invoke CALLBACK for every exception region in the current function. */ /* Invoke CALLBACK for every exception region in the current function. */
void void
for_each_eh_region (void (*callback) (struct eh_region *)) for_each_eh_region (void (*callback) (struct eh_region_d *))
{ {
int i, n = cfun->eh->last_region_number; int i, n = cfun->eh->last_region_number;
for (i = 1; i <= n; ++i) for (i = 1; i <= n; ++i)
{ {
struct eh_region *region; struct eh_region_d *region;
region = VEC_index (eh_region, cfun->eh->region_array, i); region = VEC_index (eh_region, cfun->eh->region_array, i);
if (region) if (region)
@ -2801,7 +2805,7 @@ struct reachable_info
{ {
tree types_caught; tree types_caught;
tree types_allowed; tree types_allowed;
void (*callback) (struct eh_region *, void *); void (*callback) (struct eh_region_d *, void *);
void *callback_data; void *callback_data;
}; };
@ -2840,7 +2844,8 @@ check_handled (tree handled, tree type)
static void static void
add_reachable_handler (struct reachable_info *info, add_reachable_handler (struct reachable_info *info,
struct eh_region *lp_region, struct eh_region *region) struct eh_region_d *lp_region,
struct eh_region_d *region)
{ {
if (! info) if (! info)
return; return;
@ -2857,7 +2862,7 @@ add_reachable_handler (struct reachable_info *info,
and caught/allowed type information between invocations. */ and caught/allowed type information between invocations. */
static enum reachable_code static enum reachable_code
reachable_next_level (struct eh_region *region, tree type_thrown, reachable_next_level (struct eh_region_d *region, tree type_thrown,
struct reachable_info *info, struct reachable_info *info,
bool maybe_resx) bool maybe_resx)
{ {
@ -2872,7 +2877,7 @@ reachable_next_level (struct eh_region *region, tree type_thrown,
case ERT_TRY: case ERT_TRY:
{ {
struct eh_region *c; struct eh_region_d *c;
enum reachable_code ret = RNL_NOT_CAUGHT; enum reachable_code ret = RNL_NOT_CAUGHT;
for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch) for (c = region->u.eh_try.eh_catch; c ; c = c->u.eh_catch.next_catch)
@ -3026,11 +3031,11 @@ reachable_next_level (struct eh_region *region, tree type_thrown,
void void
foreach_reachable_handler (int region_number, bool is_resx, bool inlinable_call, foreach_reachable_handler (int region_number, bool is_resx, bool inlinable_call,
void (*callback) (struct eh_region *, void *), void (*callback) (struct eh_region_d *, void *),
void *callback_data) void *callback_data)
{ {
struct reachable_info info; struct reachable_info info;
struct eh_region *region; struct eh_region_d *region;
tree type_thrown; tree type_thrown;
memset (&info, 0, sizeof (info)); memset (&info, 0, sizeof (info));
@ -3088,7 +3093,7 @@ foreach_reachable_handler (int region_number, bool is_resx, bool inlinable_call,
reached by a given insn. */ reached by a given insn. */
static void static void
arh_to_landing_pad (struct eh_region *region, void *data) arh_to_landing_pad (struct eh_region_d *region, void *data)
{ {
rtx *p_handlers = (rtx *) data; rtx *p_handlers = (rtx *) data;
if (! *p_handlers) if (! *p_handlers)
@ -3096,7 +3101,7 @@ arh_to_landing_pad (struct eh_region *region, void *data)
} }
static void static void
arh_to_label (struct eh_region *region, void *data) arh_to_label (struct eh_region_d *region, void *data)
{ {
rtx *p_handlers = (rtx *) data; rtx *p_handlers = (rtx *) data;
*p_handlers = alloc_INSN_LIST (region->label, *p_handlers); *p_handlers = alloc_INSN_LIST (region->label, *p_handlers);
@ -3138,7 +3143,7 @@ reachable_handlers (rtx insn)
bool bool
can_throw_internal_1 (int region_number, bool is_resx, bool inlinable_call) can_throw_internal_1 (int region_number, bool is_resx, bool inlinable_call)
{ {
struct eh_region *region; struct eh_region_d *region;
tree type_thrown; tree type_thrown;
region = VEC_index (eh_region, cfun->eh->region_array, region_number); region = VEC_index (eh_region, cfun->eh->region_array, region_number);
@ -3201,7 +3206,7 @@ can_throw_internal (const_rtx insn)
bool bool
can_throw_external_1 (int region_number, bool is_resx, bool inlinable_call) can_throw_external_1 (int region_number, bool is_resx, bool inlinable_call)
{ {
struct eh_region *region; struct eh_region_d *region;
tree type_thrown; tree type_thrown;
region = VEC_index (eh_region, cfun->eh->region_array, region_number); region = VEC_index (eh_region, cfun->eh->region_array, region_number);
@ -3609,9 +3614,9 @@ add_action_record (htab_t ar_hash, int filter, int next)
} }
static int static int
collect_one_action_chain (htab_t ar_hash, struct eh_region *region) collect_one_action_chain (htab_t ar_hash, struct eh_region_d *region)
{ {
struct eh_region *c; struct eh_region_d *c;
int next; int next;
/* If we've reached the top of the region chain, then we have /* If we've reached the top of the region chain, then we have
@ -3724,7 +3729,7 @@ add_call_site (rtx landing_pad, int action)
{ {
call_site_record record; call_site_record record;
record = GGC_NEW (struct call_site_record); record = GGC_NEW (struct call_site_record_d);
record->landing_pad = landing_pad; record->landing_pad = landing_pad;
record->action = action; record->action = action;
@ -3758,7 +3763,7 @@ convert_to_eh_region_ranges (void)
for (iter = get_insns (); iter ; iter = NEXT_INSN (iter)) for (iter = get_insns (); iter ; iter = NEXT_INSN (iter))
if (INSN_P (iter)) if (INSN_P (iter))
{ {
struct eh_region *region; struct eh_region_d *region;
int this_action; int this_action;
rtx this_landing_pad; rtx this_landing_pad;
@ -3802,7 +3807,7 @@ convert_to_eh_region_ranges (void)
landing pads. Collect the landing pad for this region. */ landing pads. Collect the landing pad for this region. */
if (this_action >= 0) if (this_action >= 0)
{ {
struct eh_region *o; struct eh_region_d *o;
for (o = region; ! o->landing_pad ; o = o->outer) for (o = region; ! o->landing_pad ; o = o->outer)
continue; continue;
this_landing_pad = o->landing_pad; this_landing_pad = o->landing_pad;
@ -3925,7 +3930,8 @@ dw2_size_of_call_site_table (void)
for (i = 0; i < n; ++i) for (i = 0; i < n; ++i)
{ {
struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); struct call_site_record_d *cs =
VEC_index (call_site_record, crtl->eh.call_site_record, i);
size += size_of_uleb128 (cs->action); size += size_of_uleb128 (cs->action);
} }
@ -3941,7 +3947,8 @@ sjlj_size_of_call_site_table (void)
for (i = 0; i < n; ++i) for (i = 0; i < n; ++i)
{ {
struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); struct call_site_record_d *cs =
VEC_index (call_site_record, crtl->eh.call_site_record, i);
size += size_of_uleb128 (INTVAL (cs->landing_pad)); size += size_of_uleb128 (INTVAL (cs->landing_pad));
size += size_of_uleb128 (cs->action); size += size_of_uleb128 (cs->action);
} }
@ -3958,7 +3965,8 @@ dw2_output_call_site_table (void)
for (i = 0; i < n; ++i) for (i = 0; i < n; ++i)
{ {
struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); struct call_site_record_d *cs =
VEC_index (call_site_record, crtl->eh.call_site_record, i);
char reg_start_lab[32]; char reg_start_lab[32];
char reg_end_lab[32]; char reg_end_lab[32];
char landing_pad_lab[32]; char landing_pad_lab[32];
@ -4012,7 +4020,8 @@ sjlj_output_call_site_table (void)
for (i = 0; i < n; ++i) for (i = 0; i < n; ++i)
{ {
struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); struct call_site_record_d *cs =
VEC_index (call_site_record, crtl->eh.call_site_record, i);
dw2_asm_output_data_uleb128 (INTVAL (cs->landing_pad), dw2_asm_output_data_uleb128 (INTVAL (cs->landing_pad),
"region %d landing pad", i); "region %d landing pad", i);
@ -4330,7 +4339,7 @@ get_eh_throw_stmt_table (struct function *fun)
void void
dump_eh_tree (FILE * out, struct function *fun) dump_eh_tree (FILE * out, struct function *fun)
{ {
struct eh_region *i; struct eh_region_d *i;
int depth = 0; int depth = 0;
static const char *const type_name[] = { "unknown", "cleanup", "try", "catch", static const char *const type_name[] = { "unknown", "cleanup", "try", "catch",
"allowed_exceptions", "must_not_throw", "allowed_exceptions", "must_not_throw",
@ -4380,7 +4389,7 @@ dump_eh_tree (FILE * out, struct function *fun)
case ERT_TRY: case ERT_TRY:
{ {
struct eh_region *c; struct eh_region_d *c;
fprintf (out, " catch regions:"); fprintf (out, " catch regions:");
for (c = i->u.eh_try.eh_catch; c; c = c->u.eh_catch.next_catch) for (c = i->u.eh_try.eh_catch; c; c = c->u.eh_catch.next_catch)
fprintf (out, " %i", c->region_number); fprintf (out, " %i", c->region_number);
@ -4455,7 +4464,7 @@ debug_eh_tree (struct function *fn)
/* Verify EH region invariants. */ /* Verify EH region invariants. */
static bool static bool
verify_eh_region (struct eh_region *region) verify_eh_region (struct eh_region_d *region)
{ {
bool found = false; bool found = false;
if (!region) if (!region)
@ -4464,7 +4473,7 @@ verify_eh_region (struct eh_region *region)
{ {
case ERT_TRY: case ERT_TRY:
{ {
struct eh_region *c, *prev = NULL; struct eh_region_d *c, *prev = NULL;
if (region->u.eh_try.eh_catch->u.eh_catch.prev_catch) if (region->u.eh_try.eh_catch->u.eh_catch.prev_catch)
{ {
error ("Try region %i has wrong rh_catch pointer to %i", error ("Try region %i has wrong rh_catch pointer to %i",
@ -4526,7 +4535,7 @@ verify_eh_region (struct eh_region *region)
void void
verify_eh_tree (struct function *fun) verify_eh_tree (struct function *fun)
{ {
struct eh_region *i, *outer = NULL; struct eh_region_d *i, *outer = NULL;
bool err = false; bool err = false;
int nvisited = 0; int nvisited = 0;
int count = 0; int count = 0;

View File

@ -37,17 +37,17 @@ enum eh_region_type
}; };
/* Describes one exception region. */ /* Describes one exception region. */
struct GTY(()) eh_region struct GTY(()) eh_region_d
{ {
/* The immediately surrounding region. */ /* The immediately surrounding region. */
struct eh_region *outer; struct eh_region_d *outer;
/* The list of immediately contained regions. */ /* The list of immediately contained regions. */
struct eh_region *inner; struct eh_region_d *inner;
struct eh_region *next_peer; struct eh_region_d *next_peer;
/* List of regions sharing label. */ /* List of regions sharing label. */
struct eh_region *next_region_sharing_label; struct eh_region_d *next_region_sharing_label;
/* An identifier for this region. */ /* An identifier for this region. */
int region_number; int region_number;
@ -64,15 +64,15 @@ struct GTY(()) eh_region
/* A list of catch blocks, a surrounding try block, /* A list of catch blocks, a surrounding try block,
and the label for continuing after a catch. */ and the label for continuing after a catch. */
struct eh_region_u_try { struct eh_region_u_try {
struct eh_region *eh_catch; struct eh_region_d *eh_catch;
struct eh_region *last_catch; struct eh_region_d *last_catch;
} GTY ((tag ("ERT_TRY"))) eh_try; } GTY ((tag ("ERT_TRY"))) eh_try;
/* The list through the catch handlers, the list of type objects /* The list through the catch handlers, the list of type objects
matched, and the list of associated filters. */ matched, and the list of associated filters. */
struct eh_region_u_catch { struct eh_region_u_catch {
struct eh_region *next_catch; struct eh_region_d *next_catch;
struct eh_region *prev_catch; struct eh_region_d *prev_catch;
tree type_list; tree type_list;
tree filter_list; tree filter_list;
} GTY ((tag ("ERT_CATCH"))) eh_catch; } GTY ((tag ("ERT_CATCH"))) eh_catch;
@ -108,7 +108,7 @@ struct GTY(()) eh_region
unsigned may_contain_throw : 1; unsigned may_contain_throw : 1;
}; };
typedef struct eh_region *eh_region; typedef struct eh_region_d *eh_region;
DEF_VEC_P(eh_region); DEF_VEC_P(eh_region);
DEF_VEC_ALLOC_P(eh_region, gc); DEF_VEC_ALLOC_P(eh_region, gc);
DEF_VEC_ALLOC_P(eh_region, heap); DEF_VEC_ALLOC_P(eh_region, heap);
@ -118,7 +118,7 @@ DEF_VEC_ALLOC_P(eh_region, heap);
struct GTY(()) eh_status struct GTY(()) eh_status
{ {
/* The tree of all regions for this function. */ /* The tree of all regions for this function. */
struct eh_region *region_tree; struct eh_region_d *region_tree;
/* The same information as an indexable array. */ /* The same information as an indexable array. */
VEC(eh_region,gc) *region_array; VEC(eh_region,gc) *region_array;
@ -133,14 +133,14 @@ extern int doing_eh (int);
/* Note that the current EH region (if any) may contain a throw, or a /* Note that the current EH region (if any) may contain a throw, or a
call to a function which itself may contain a throw. */ call to a function which itself may contain a throw. */
extern void note_eh_region_may_contain_throw (struct eh_region *); extern void note_eh_region_may_contain_throw (struct eh_region_d *);
/* Invokes CALLBACK for every exception handler label. Only used by old /* Invokes CALLBACK for every exception handler label. Only used by old
loop hackery; should not be used by new code. */ loop hackery; should not be used by new code. */
extern void for_each_eh_label (void (*) (rtx)); extern void for_each_eh_label (void (*) (rtx));
/* Invokes CALLBACK for every exception region in the current function. */ /* Invokes CALLBACK for every exception region in the current function. */
extern void for_each_eh_region (void (*) (struct eh_region *)); extern void for_each_eh_region (void (*) (struct eh_region_d *));
/* Determine if the given INSN can throw an exception. */ /* Determine if the given INSN can throw an exception. */
extern bool can_throw_internal_1 (int, bool, bool); extern bool can_throw_internal_1 (int, bool, bool);
@ -182,19 +182,19 @@ extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map,
extern void sjlj_emit_function_exit_after (rtx); extern void sjlj_emit_function_exit_after (rtx);
extern void default_init_unwind_resume_libfunc (void); extern void default_init_unwind_resume_libfunc (void);
extern struct eh_region *gen_eh_region_cleanup (struct eh_region *); extern struct eh_region_d *gen_eh_region_cleanup (struct eh_region_d *);
extern struct eh_region *gen_eh_region_try (struct eh_region *); extern struct eh_region_d *gen_eh_region_try (struct eh_region_d *);
extern struct eh_region *gen_eh_region_catch (struct eh_region *, tree); extern struct eh_region_d *gen_eh_region_catch (struct eh_region_d *, tree);
extern struct eh_region *gen_eh_region_allowed (struct eh_region *, tree); extern struct eh_region_d *gen_eh_region_allowed (struct eh_region_d *, tree);
extern struct eh_region *gen_eh_region_must_not_throw (struct eh_region *); extern struct eh_region_d *gen_eh_region_must_not_throw (struct eh_region_d *);
extern int get_eh_region_number (struct eh_region *); extern int get_eh_region_number (struct eh_region_d *);
extern bool get_eh_region_may_contain_throw (struct eh_region *); extern bool get_eh_region_may_contain_throw (struct eh_region_d *);
extern tree get_eh_region_no_tree_label (int); extern tree get_eh_region_no_tree_label (int);
extern tree get_eh_region_tree_label (struct eh_region *); extern tree get_eh_region_tree_label (struct eh_region_d *);
extern void set_eh_region_tree_label (struct eh_region *, tree); extern void set_eh_region_tree_label (struct eh_region_d *, tree);
extern void foreach_reachable_handler (int, bool, bool, extern void foreach_reachable_handler (int, bool, bool,
void (*) (struct eh_region *, void *), void (*) (struct eh_region_d *, void *),
void *); void *);
extern void collect_eh_region_array (void); extern void collect_eh_region_array (void);
@ -274,5 +274,6 @@ extern void set_eh_throw_stmt_table (struct function *, struct htab *);
extern void remove_unreachable_regions (sbitmap, sbitmap); extern void remove_unreachable_regions (sbitmap, sbitmap);
extern VEC(int,heap) * label_to_region_map (void); extern VEC(int,heap) * label_to_region_map (void);
extern int num_eh_regions (void); extern int num_eh_regions (void);
extern struct eh_region *redirect_eh_edge_to_label (struct edge_def *, tree, bool, bool, int); extern struct eh_region_d *redirect_eh_edge_to_label (struct edge_def *, tree,
bool, bool, int);
extern int get_next_region_sharing_label (int); extern int get_next_region_sharing_label (int);

View File

@ -134,7 +134,7 @@ struct GTY(()) expr_status {
rtx x_forced_labels; rtx x_forced_labels;
}; };
typedef struct call_site_record *call_site_record; typedef struct call_site_record_d *call_site_record;
DEF_VEC_P(call_site_record); DEF_VEC_P(call_site_record);
DEF_VEC_ALLOC_P(call_site_record, gc); DEF_VEC_ALLOC_P(call_site_record, gc);
@ -169,12 +169,12 @@ struct GTY(()) rtl_eh {
struct gimple_df; struct gimple_df;
struct temp_slot; struct temp_slot;
typedef struct temp_slot *temp_slot_p; typedef struct temp_slot *temp_slot_p;
struct call_site_record; struct call_site_record_d;
DEF_VEC_P(temp_slot_p); DEF_VEC_P(temp_slot_p);
DEF_VEC_ALLOC_P(temp_slot_p,gc); DEF_VEC_ALLOC_P(temp_slot_p,gc);
struct ipa_opt_pass; struct ipa_opt_pass_d;
typedef struct ipa_opt_pass *ipa_opt_pass; typedef struct ipa_opt_pass_d *ipa_opt_pass;
DEF_VEC_P(ipa_opt_pass); DEF_VEC_P(ipa_opt_pass);
DEF_VEC_ALLOC_P(ipa_opt_pass,heap); DEF_VEC_ALLOC_P(ipa_opt_pass,heap);

View File

@ -343,7 +343,7 @@ struct occr
[one could build a mapping table without holes afterwards though]. [one could build a mapping table without holes afterwards though].
Someday I'll perform the computation and figure it out. */ Someday I'll perform the computation and figure it out. */
struct hash_table struct hash_table_d
{ {
/* The table itself. /* The table itself.
This is an array of `expr_hash_table_size' elements. */ This is an array of `expr_hash_table_size' elements. */
@ -360,10 +360,10 @@ struct hash_table
}; };
/* Expression hash table. */ /* Expression hash table. */
static struct hash_table expr_hash_table; static struct hash_table_d expr_hash_table;
/* Copy propagation hash table. */ /* Copy propagation hash table. */
static struct hash_table set_hash_table; static struct hash_table_d set_hash_table;
/* This is a list of expressions which are MEMs and will be used by load /* This is a list of expressions which are MEMs and will be used by load
or store motion. or store motion.
@ -445,30 +445,30 @@ static void *gcalloc (size_t, size_t) ATTRIBUTE_MALLOC;
static void *gcse_alloc (unsigned long); static void *gcse_alloc (unsigned long);
static void alloc_gcse_mem (void); static void alloc_gcse_mem (void);
static void free_gcse_mem (void); static void free_gcse_mem (void);
static void hash_scan_insn (rtx, struct hash_table *); static void hash_scan_insn (rtx, struct hash_table_d *);
static void hash_scan_set (rtx, rtx, struct hash_table *); static void hash_scan_set (rtx, rtx, struct hash_table_d *);
static void hash_scan_clobber (rtx, rtx, struct hash_table *); static void hash_scan_clobber (rtx, rtx, struct hash_table_d *);
static void hash_scan_call (rtx, rtx, struct hash_table *); static void hash_scan_call (rtx, rtx, struct hash_table_d *);
static int want_to_gcse_p (rtx); static int want_to_gcse_p (rtx);
static bool gcse_constant_p (const_rtx); static bool gcse_constant_p (const_rtx);
static int oprs_unchanged_p (const_rtx, const_rtx, int); static int oprs_unchanged_p (const_rtx, const_rtx, int);
static int oprs_anticipatable_p (const_rtx, const_rtx); static int oprs_anticipatable_p (const_rtx, const_rtx);
static int oprs_available_p (const_rtx, const_rtx); static int oprs_available_p (const_rtx, const_rtx);
static void insert_expr_in_table (rtx, enum machine_mode, rtx, int, int, static void insert_expr_in_table (rtx, enum machine_mode, rtx, int, int,
struct hash_table *); struct hash_table_d *);
static void insert_set_in_table (rtx, rtx, struct hash_table *); static void insert_set_in_table (rtx, rtx, struct hash_table_d *);
static unsigned int hash_expr (const_rtx, enum machine_mode, int *, int); static unsigned int hash_expr (const_rtx, enum machine_mode, int *, int);
static unsigned int hash_set (int, int); static unsigned int hash_set (int, int);
static int expr_equiv_p (const_rtx, const_rtx); static int expr_equiv_p (const_rtx, const_rtx);
static void record_last_reg_set_info (rtx, int); static void record_last_reg_set_info (rtx, int);
static void record_last_mem_set_info (rtx); static void record_last_mem_set_info (rtx);
static void record_last_set_info (rtx, const_rtx, void *); static void record_last_set_info (rtx, const_rtx, void *);
static void compute_hash_table (struct hash_table *); static void compute_hash_table (struct hash_table_d *);
static void alloc_hash_table (int, struct hash_table *, int); static void alloc_hash_table (int, struct hash_table_d *, int);
static void free_hash_table (struct hash_table *); static void free_hash_table (struct hash_table_d *);
static void compute_hash_table_work (struct hash_table *); static void compute_hash_table_work (struct hash_table_d *);
static void dump_hash_table (FILE *, const char *, struct hash_table *); static void dump_hash_table (FILE *, const char *, struct hash_table_d *);
static struct expr *lookup_set (unsigned int, struct hash_table *); static struct expr *lookup_set (unsigned int, struct hash_table_d *);
static struct expr *next_set (unsigned int, struct expr *); static struct expr *next_set (unsigned int, struct expr *);
static void reset_opr_set_tables (void); static void reset_opr_set_tables (void);
static int oprs_not_set_p (const_rtx, const_rtx); static int oprs_not_set_p (const_rtx, const_rtx);
@ -481,7 +481,7 @@ static void free_cprop_mem (void);
static void compute_transp (const_rtx, int, sbitmap *, int); static void compute_transp (const_rtx, int, sbitmap *, int);
static void compute_transpout (void); static void compute_transpout (void);
static void compute_local_properties (sbitmap *, sbitmap *, sbitmap *, static void compute_local_properties (sbitmap *, sbitmap *, sbitmap *,
struct hash_table *); struct hash_table_d *);
static void compute_cprop_data (void); static void compute_cprop_data (void);
static void find_used_regs (rtx *, void *); static void find_used_regs (rtx *, void *);
static int try_replace_reg (rtx, rtx, rtx); static int try_replace_reg (rtx, rtx, rtx);
@ -691,7 +691,7 @@ free_gcse_mem (void)
static void static void
compute_local_properties (sbitmap *transp, sbitmap *comp, sbitmap *antloc, compute_local_properties (sbitmap *transp, sbitmap *comp, sbitmap *antloc,
struct hash_table *table) struct hash_table_d *table)
{ {
unsigned int i; unsigned int i;
@ -1096,7 +1096,7 @@ expr_equiv_p (const_rtx x, const_rtx y)
static void static void
insert_expr_in_table (rtx x, enum machine_mode mode, rtx insn, int antic_p, insert_expr_in_table (rtx x, enum machine_mode mode, rtx insn, int antic_p,
int avail_p, struct hash_table *table) int avail_p, struct hash_table_d *table)
{ {
int found, do_not_record_p; int found, do_not_record_p;
unsigned int hash; unsigned int hash;
@ -1197,7 +1197,7 @@ insert_expr_in_table (rtx x, enum machine_mode mode, rtx insn, int antic_p,
basic block. */ basic block. */
static void static void
insert_set_in_table (rtx x, rtx insn, struct hash_table *table) insert_set_in_table (rtx x, rtx insn, struct hash_table_d *table)
{ {
int found; int found;
unsigned int hash; unsigned int hash;
@ -1293,7 +1293,7 @@ gcse_constant_p (const_rtx x)
expression one). */ expression one). */
static void static void
hash_scan_set (rtx pat, rtx insn, struct hash_table *table) hash_scan_set (rtx pat, rtx insn, struct hash_table_d *table)
{ {
rtx src = SET_SRC (pat); rtx src = SET_SRC (pat);
rtx dest = SET_DEST (pat); rtx dest = SET_DEST (pat);
@ -1432,14 +1432,14 @@ hash_scan_set (rtx pat, rtx insn, struct hash_table *table)
static void static void
hash_scan_clobber (rtx x ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED, hash_scan_clobber (rtx x ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED,
struct hash_table *table ATTRIBUTE_UNUSED) struct hash_table_d *table ATTRIBUTE_UNUSED)
{ {
/* Currently nothing to do. */ /* Currently nothing to do. */
} }
static void static void
hash_scan_call (rtx x ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED, hash_scan_call (rtx x ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED,
struct hash_table *table ATTRIBUTE_UNUSED) struct hash_table_d *table ATTRIBUTE_UNUSED)
{ {
/* Currently nothing to do. */ /* Currently nothing to do. */
} }
@ -1456,7 +1456,7 @@ hash_scan_call (rtx x ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED,
otherwise it is for the expression hash table. */ otherwise it is for the expression hash table. */
static void static void
hash_scan_insn (rtx insn, struct hash_table *table) hash_scan_insn (rtx insn, struct hash_table_d *table)
{ {
rtx pat = PATTERN (insn); rtx pat = PATTERN (insn);
int i; int i;
@ -1486,7 +1486,7 @@ hash_scan_insn (rtx insn, struct hash_table *table)
} }
static void static void
dump_hash_table (FILE *file, const char *name, struct hash_table *table) dump_hash_table (FILE *file, const char *name, struct hash_table_d *table)
{ {
int i; int i;
/* Flattened out table, so it's printed in proper order. */ /* Flattened out table, so it's printed in proper order. */
@ -1647,7 +1647,7 @@ record_last_set_info (rtx dest, const_rtx setter ATTRIBUTE_UNUSED, void *data)
TABLE is the table computed. */ TABLE is the table computed. */
static void static void
compute_hash_table_work (struct hash_table *table) compute_hash_table_work (struct hash_table_d *table)
{ {
int i; int i;
@ -1706,7 +1706,7 @@ compute_hash_table_work (struct hash_table *table)
be created. */ be created. */
static void static void
alloc_hash_table (int n_insns, struct hash_table *table, int set_p) alloc_hash_table (int n_insns, struct hash_table_d *table, int set_p)
{ {
int n; int n;
@ -1726,7 +1726,7 @@ alloc_hash_table (int n_insns, struct hash_table *table, int set_p)
/* Free things allocated by alloc_hash_table. */ /* Free things allocated by alloc_hash_table. */
static void static void
free_hash_table (struct hash_table *table) free_hash_table (struct hash_table_d *table)
{ {
free (table->table); free (table->table);
} }
@ -1735,7 +1735,7 @@ free_hash_table (struct hash_table *table)
expression hash table. */ expression hash table. */
static void static void
compute_hash_table (struct hash_table *table) compute_hash_table (struct hash_table_d *table)
{ {
/* Initialize count of number of entries in hash table. */ /* Initialize count of number of entries in hash table. */
table->n_elems = 0; table->n_elems = 0;
@ -1750,7 +1750,7 @@ compute_hash_table (struct hash_table *table)
table entry, or NULL if not found. */ table entry, or NULL if not found. */
static struct expr * static struct expr *
lookup_set (unsigned int regno, struct hash_table *table) lookup_set (unsigned int regno, struct hash_table_d *table)
{ {
unsigned int hash = hash_set (regno, table->size); unsigned int hash = hash_set (regno, table->size);
struct expr *expr; struct expr *expr;

View File

@ -181,7 +181,7 @@ register_bb_in_sese (basic_block entry_bb, basic_block exit_bb, sese region)
sese sese
new_sese (edge entry, edge exit) new_sese (edge entry, edge exit)
{ {
sese res = XNEW (struct sese); sese res = XNEW (struct sese_d);
SESE_ENTRY (res) = entry; SESE_ENTRY (res) = entry;
SESE_EXIT (res) = exit; SESE_EXIT (res) = exit;
@ -274,7 +274,7 @@ static void
loop_iv_stack_push_iv (loop_iv_stack stack, tree iv, const char *name) loop_iv_stack_push_iv (loop_iv_stack stack, tree iv, const char *name)
{ {
iv_stack_entry *entry = XNEW (iv_stack_entry); iv_stack_entry *entry = XNEW (iv_stack_entry);
name_tree named_iv = XNEW (struct name_tree); name_tree named_iv = XNEW (struct name_tree_d);
named_iv->t = iv; named_iv->t = iv;
named_iv->name = name; named_iv->name = name;
@ -396,7 +396,7 @@ free_loop_iv_stack (loop_iv_stack stack)
/* Structure containing the mapping between the CLooG's induction /* Structure containing the mapping between the CLooG's induction
variable and the type of the old induction variable. */ variable and the type of the old induction variable. */
typedef struct ivtype_map_elt typedef struct ivtype_map_elt_d
{ {
tree type; tree type;
const char *cloog_iv; const char *cloog_iv;
@ -417,7 +417,7 @@ debug_ivtype_elt (ivtype_map_elt elt)
static int static int
debug_ivtype_map_1 (void **slot, void *s ATTRIBUTE_UNUSED) debug_ivtype_map_1 (void **slot, void *s ATTRIBUTE_UNUSED)
{ {
struct ivtype_map_elt *entry = (struct ivtype_map_elt *) *slot; struct ivtype_map_elt_d *entry = (struct ivtype_map_elt_d *) *slot;
debug_ivtype_elt (entry); debug_ivtype_elt (entry);
return 1; return 1;
} }
@ -437,7 +437,7 @@ new_ivtype_map_elt (const char *cloog_iv, tree type)
{ {
ivtype_map_elt res; ivtype_map_elt res;
res = XNEW (struct ivtype_map_elt); res = XNEW (struct ivtype_map_elt_d);
res->cloog_iv = cloog_iv; res->cloog_iv = cloog_iv;
res->type = type; res->type = type;
@ -449,7 +449,7 @@ new_ivtype_map_elt (const char *cloog_iv, tree type)
static hashval_t static hashval_t
ivtype_map_elt_info (const void *elt) ivtype_map_elt_info (const void *elt)
{ {
return htab_hash_pointer (((const struct ivtype_map_elt *) elt)->cloog_iv); return htab_hash_pointer (((const struct ivtype_map_elt_d *) elt)->cloog_iv);
} }
/* Compares database elements E1 and E2. */ /* Compares database elements E1 and E2. */
@ -457,8 +457,8 @@ ivtype_map_elt_info (const void *elt)
static int static int
eq_ivtype_map_elts (const void *e1, const void *e2) eq_ivtype_map_elts (const void *e1, const void *e2)
{ {
const struct ivtype_map_elt *elt1 = (const struct ivtype_map_elt *) e1; const struct ivtype_map_elt_d *elt1 = (const struct ivtype_map_elt_d *) e1;
const struct ivtype_map_elt *elt2 = (const struct ivtype_map_elt *) e2; const struct ivtype_map_elt_d *elt2 = (const struct ivtype_map_elt_d *) e2;
return (elt1->cloog_iv == elt2->cloog_iv); return (elt1->cloog_iv == elt2->cloog_iv);
} }
@ -472,7 +472,7 @@ eq_ivtype_map_elts (const void *e1, const void *e2)
static tree static tree
gcc_type_for_cloog_iv (const char *cloog_iv, graphite_bb_p gbb) gcc_type_for_cloog_iv (const char *cloog_iv, graphite_bb_p gbb)
{ {
struct ivtype_map_elt tmp; struct ivtype_map_elt_d tmp;
PTR *slot; PTR *slot;
tmp.cloog_iv = cloog_iv; tmp.cloog_iv = cloog_iv;
@ -1339,7 +1339,7 @@ free_graphite_bb (struct graphite_bb *gbb)
/* Structure containing the mapping between the old names and the new /* Structure containing the mapping between the old names and the new
names used after block copy in the new loop context. */ names used after block copy in the new loop context. */
typedef struct rename_map_elt typedef struct rename_map_elt_d
{ {
tree old_name, new_name; tree old_name, new_name;
} *rename_map_elt; } *rename_map_elt;
@ -1362,7 +1362,7 @@ debug_rename_elt (rename_map_elt elt)
static int static int
debug_rename_map_1 (void **slot, void *s ATTRIBUTE_UNUSED) debug_rename_map_1 (void **slot, void *s ATTRIBUTE_UNUSED)
{ {
struct rename_map_elt *entry = (struct rename_map_elt *) *slot; struct rename_map_elt_d *entry = (struct rename_map_elt_d *) *slot;
debug_rename_elt (entry); debug_rename_elt (entry);
return 1; return 1;
} }
@ -1382,7 +1382,7 @@ new_rename_map_elt (tree old_name, tree new_name)
{ {
rename_map_elt res; rename_map_elt res;
res = XNEW (struct rename_map_elt); res = XNEW (struct rename_map_elt_d);
res->old_name = old_name; res->old_name = old_name;
res->new_name = new_name; res->new_name = new_name;
@ -1394,7 +1394,7 @@ new_rename_map_elt (tree old_name, tree new_name)
static hashval_t static hashval_t
rename_map_elt_info (const void *elt) rename_map_elt_info (const void *elt)
{ {
return htab_hash_pointer (((const struct rename_map_elt *) elt)->old_name); return htab_hash_pointer (((const struct rename_map_elt_d *) elt)->old_name);
} }
/* Compares database elements E1 and E2. */ /* Compares database elements E1 and E2. */
@ -1402,8 +1402,8 @@ rename_map_elt_info (const void *elt)
static int static int
eq_rename_map_elts (const void *e1, const void *e2) eq_rename_map_elts (const void *e1, const void *e2)
{ {
const struct rename_map_elt *elt1 = (const struct rename_map_elt *) e1; const struct rename_map_elt_d *elt1 = (const struct rename_map_elt_d *) e1;
const struct rename_map_elt *elt2 = (const struct rename_map_elt *) e2; const struct rename_map_elt_d *elt2 = (const struct rename_map_elt_d *) e2;
return (elt1->old_name == elt2->old_name); return (elt1->old_name == elt2->old_name);
} }
@ -1413,7 +1413,7 @@ eq_rename_map_elts (const void *e1, const void *e2)
static tree static tree
get_new_name_from_old_name (htab_t map, tree old_name) get_new_name_from_old_name (htab_t map, tree old_name)
{ {
struct rename_map_elt tmp; struct rename_map_elt_d tmp;
PTR *slot; PTR *slot;
tmp.old_name = old_name; tmp.old_name = old_name;
@ -2419,7 +2419,7 @@ scop_record_loop (scop_p scop, loop_p loop)
if (!induction_var) if (!induction_var)
return false; return false;
oldiv = XNEW (struct name_tree); oldiv = XNEW (struct name_tree_d);
oldiv->t = induction_var; oldiv->t = induction_var;
oldiv->name = get_name (SSA_NAME_VAR (oldiv->t)); oldiv->name = get_name (SSA_NAME_VAR (oldiv->t));
oldiv->loop = loop; oldiv->loop = loop;
@ -2664,7 +2664,7 @@ param_index (tree var, scop_p scop)
gcc_assert (SCOP_ADD_PARAMS (scop)); gcc_assert (SCOP_ADD_PARAMS (scop));
nvar = XNEW (struct name_tree); nvar = XNEW (struct name_tree_d);
nvar->t = var; nvar->t = var;
nvar->name = NULL; nvar->name = NULL;
VEC_safe_push (name_tree, heap, SCOP_PARAMS (scop), nvar); VEC_safe_push (name_tree, heap, SCOP_PARAMS (scop), nvar);
@ -4428,7 +4428,7 @@ build_iv_mapping (loop_iv_stack ivstack, htab_t map, gbb_p gbb, scop_p scop)
for (i = 0; VEC_iterate (name_tree, SCOP_OLDIVS (scop), i, iv); i++) for (i = 0; VEC_iterate (name_tree, SCOP_OLDIVS (scop), i, iv); i++)
{ {
struct rename_map_elt tmp; struct rename_map_elt_d tmp;
if (!flow_bb_inside_loop_p (iv->loop, GBB_BB (gbb))) if (!flow_bb_inside_loop_p (iv->loop, GBB_BB (gbb)))
continue; continue;
@ -4450,7 +4450,7 @@ build_iv_mapping (loop_iv_stack ivstack, htab_t map, gbb_p gbb, scop_p scop)
static void static void
register_old_and_new_names (htab_t map, tree old_name, tree new_name) register_old_and_new_names (htab_t map, tree old_name, tree new_name)
{ {
struct rename_map_elt tmp; struct rename_map_elt_d tmp;
PTR *slot; PTR *slot;
tmp.old_name = old_name; tmp.old_name = old_name;
@ -4549,7 +4549,7 @@ copy_bb_and_scalar_dependences (basic_block bb, scop_p scop,
static int static int
add_loop_exit_phis (void **slot, void *s) add_loop_exit_phis (void **slot, void *s)
{ {
struct rename_map_elt *entry = (struct rename_map_elt *) *slot; struct rename_map_elt_d *entry = (struct rename_map_elt_d *) *slot;
tree new_name = entry->new_name; tree new_name = entry->new_name;
basic_block bb = (basic_block) s; basic_block bb = (basic_block) s;
gimple phi = create_phi_node (new_name, bb); gimple phi = create_phi_node (new_name, bb);
@ -4606,7 +4606,7 @@ default_liveout_before_guard (htab_t liveout_before_guard, tree old_name)
static int static int
add_guard_exit_phis (void **slot, void *s) add_guard_exit_phis (void **slot, void *s)
{ {
struct rename_map_elt *entry = (struct rename_map_elt *) *slot; struct rename_map_elt_d *entry = (struct rename_map_elt_d *) *slot;
struct igp *i = (struct igp *) s; struct igp *i = (struct igp *) s;
basic_block bb = i->bb; basic_block bb = i->bb;
edge true_edge = i->true_edge; edge true_edge = i->true_edge;
@ -4661,11 +4661,11 @@ insert_guard_phis (scop_p scop, basic_block bb, edge true_edge,
static int static int
copy_renames (void **slot, void *s) copy_renames (void **slot, void *s)
{ {
struct rename_map_elt *entry = (struct rename_map_elt *) *slot; struct rename_map_elt_d *entry = (struct rename_map_elt_d *) *slot;
htab_t res = (htab_t) s; htab_t res = (htab_t) s;
tree old_name = entry->old_name; tree old_name = entry->old_name;
tree new_name = entry->new_name; tree new_name = entry->new_name;
struct rename_map_elt tmp; struct rename_map_elt_d tmp;
PTR *x; PTR *x;
tmp.old_name = old_name; tmp.old_name = old_name;
@ -5009,7 +5009,8 @@ remove_sese_region (sese region)
VEC_free (basic_block, heap, bbs); VEC_free (basic_block, heap, bbs);
} }
typedef struct ifsese { typedef struct ifsese_d
{
sese region; sese region;
sese true_region; sese true_region;
sese false_region; sese false_region;
@ -5083,10 +5084,10 @@ create_if_region_on_edge (edge entry, tree condition)
{ {
edge e; edge e;
edge_iterator ei; edge_iterator ei;
sese sese_region = GGC_NEW (struct sese); sese sese_region = GGC_NEW (struct sese_d);
sese true_region = GGC_NEW (struct sese); sese true_region = GGC_NEW (struct sese_d);
sese false_region = GGC_NEW (struct sese); sese false_region = GGC_NEW (struct sese_d);
ifsese if_region = GGC_NEW (struct ifsese); ifsese if_region = GGC_NEW (struct ifsese_d);
edge exit = create_empty_if_region_on_edge (entry, condition); edge exit = create_empty_if_region_on_edge (entry, condition);
if_region->region = sese_region; if_region->region = sese_region;
@ -5369,7 +5370,7 @@ compute_cloog_iv_types_1 (graphite_bb_p gbb,
for (t = user_stmt->substitutions; t; t = t->next, index++) for (t = user_stmt->substitutions; t; t = t->next, index++)
{ {
PTR *slot; PTR *slot;
struct ivtype_map_elt tmp; struct ivtype_map_elt_d tmp;
struct clast_expr *expr = (struct clast_expr *) struct clast_expr *expr = (struct clast_expr *)
((struct clast_assignment *)t)->RHS; ((struct clast_assignment *)t)->RHS;

View File

@ -265,7 +265,7 @@ struct loop_to_cloog_loop_str
CloogLoop *cloog_loop; CloogLoop *cloog_loop;
}; };
typedef struct name_tree typedef struct name_tree_d
{ {
tree t; tree t;
const char *name; const char *name;
@ -277,7 +277,7 @@ DEF_VEC_ALLOC_P (name_tree, heap);
/* A Single Entry, Single Exit region is a part of the CFG delimited /* A Single Entry, Single Exit region is a part of the CFG delimited
by two edges. */ by two edges. */
typedef struct sese typedef struct sese_d
{ {
/* Single ENTRY and single EXIT from the SESE region. */ /* Single ENTRY and single EXIT from the SESE region. */
edge entry, exit; edge entry, exit;

View File

@ -1,5 +1,5 @@
/* Interprocedural constant propagation /* Interprocedural constant propagation
Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Razya Ladelsky <RAZYA@il.ibm.com> Contributed by Razya Ladelsky <RAZYA@il.ibm.com>
This file is part of GCC. This file is part of GCC.
@ -1201,7 +1201,7 @@ cgraph_gate_cp (void)
return flag_ipa_cp; return flag_ipa_cp;
} }
struct ipa_opt_pass pass_ipa_cp = struct ipa_opt_pass_d pass_ipa_cp =
{ {
{ {
IPA_PASS, IPA_PASS,

View File

@ -1773,7 +1773,7 @@ inline_transform (struct cgraph_node *node)
return todo | execute_fixup_cfg (); return todo | execute_fixup_cfg ();
} }
struct ipa_opt_pass pass_ipa_inline = struct ipa_opt_pass_d pass_ipa_inline =
{ {
{ {
IPA_PASS, IPA_PASS,

View File

@ -1,5 +1,5 @@
/* Callgraph based analysis of static variables. /* Callgraph based analysis of static variables.
Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Kenneth Zadeck <zadeck@naturalbridge.com> Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
This file is part of GCC. This file is part of GCC.
@ -876,7 +876,7 @@ gate_pure_const (void)
&& !(errorcount || sorrycount)); && !(errorcount || sorrycount));
} }
struct ipa_opt_pass pass_ipa_pure_const = struct ipa_opt_pass_d pass_ipa_pure_const =
{ {
{ {
IPA_PASS, IPA_PASS,

View File

@ -1,5 +1,5 @@
/* Callgraph based analysis of static variables. /* Callgraph based analysis of static variables.
Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Kenneth Zadeck <zadeck@naturalbridge.com> Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
This file is part of GCC. This file is part of GCC.
@ -1250,7 +1250,7 @@ gate_reference (void)
&& !(errorcount || sorrycount)); && !(errorcount || sorrycount));
} }
struct ipa_opt_pass pass_ipa_reference = struct ipa_opt_pass_d pass_ipa_reference =
{ {
{ {
IPA_PASS, IPA_PASS,

View File

@ -1305,7 +1305,7 @@ verify_omega_pb (omega_pb pb)
enum omega_result result; enum omega_result result;
int e; int e;
bool any_color = false; bool any_color = false;
omega_pb tmp_problem = XNEW (struct omega_pb); omega_pb tmp_problem = XNEW (struct omega_pb_d);
omega_copy_problem (tmp_problem, pb); omega_copy_problem (tmp_problem, pb);
tmp_problem->safe_vars = 0; tmp_problem->safe_vars = 0;
@ -2286,7 +2286,7 @@ omega_eliminate_redundant (omega_pb pb, bool expensive)
if (!expensive) if (!expensive)
goto eliminate_redundant_done; goto eliminate_redundant_done;
tmp_problem = XNEW (struct omega_pb); tmp_problem = XNEW (struct omega_pb_d);
conservative++; conservative++;
for (e = pb->num_geqs - 1; e >= 0; e--) for (e = pb->num_geqs - 1; e >= 0; e--)
@ -2648,7 +2648,7 @@ omega_eliminate_red (omega_pb pb, bool eliminate_all)
return; return;
conservative++; conservative++;
tmp_problem = XNEW (struct omega_pb); tmp_problem = XNEW (struct omega_pb_d);
for (e = pb->num_geqs - 1; e >= 0; e--) for (e = pb->num_geqs - 1; e >= 0; e--)
if (pb->geqs[e].color == omega_red) if (pb->geqs[e].color == omega_red)
@ -3491,7 +3491,7 @@ parallel_splinter (omega_pb pb, int e, int diff,
omega_print_problem (dump_file, pb); omega_print_problem (dump_file, pb);
} }
tmp_problem = XNEW (struct omega_pb); tmp_problem = XNEW (struct omega_pb_d);
omega_copy_eqn (&pb->eqs[0], &pb->geqs[e], pb->num_vars); omega_copy_eqn (&pb->eqs[0], &pb->geqs[e], pb->num_vars);
pb->num_eqs = 1; pb->num_eqs = 1;
@ -5499,7 +5499,7 @@ omega_alloc_problem (int nvars, int nprot)
omega_initialize (); omega_initialize ();
/* Allocate and initialize PB. */ /* Allocate and initialize PB. */
pb = XCNEW (struct omega_pb); pb = XCNEW (struct omega_pb_d);
pb->var = XCNEWVEC (int, OMEGA_MAX_VARS + 2); pb->var = XCNEWVEC (int, OMEGA_MAX_VARS + 2);
pb->forwarding_address = XCNEWVEC (int, OMEGA_MAX_VARS + 2); pb->forwarding_address = XCNEWVEC (int, OMEGA_MAX_VARS + 2);
pb->geqs = omega_alloc_eqns (0, OMEGA_MAX_GEQS); pb->geqs = omega_alloc_eqns (0, OMEGA_MAX_GEQS);

View File

@ -5,7 +5,7 @@
This code has no license restrictions, and is considered public This code has no license restrictions, and is considered public
domain. domain.
Changes copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. Changes copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
Contributed by Sebastian Pop <sebastian.pop@inria.fr> Contributed by Sebastian Pop <sebastian.pop@inria.fr>
This file is part of GCC. This file is part of GCC.
@ -58,7 +58,7 @@ enum omega_eqn_color {
}; };
/* Structure for equations. */ /* Structure for equations. */
typedef struct eqn typedef struct eqn_d
{ {
int key; int key;
int touched; int touched;
@ -72,7 +72,7 @@ typedef struct eqn
int *coef; int *coef;
} *eqn; } *eqn;
typedef struct omega_pb typedef struct omega_pb_d
{ {
/* The number of variables in the system of equations. */ /* The number of variables in the system of equations. */
int num_vars; int num_vars;
@ -215,7 +215,7 @@ static inline eqn
omega_alloc_eqns (int s, int n) omega_alloc_eqns (int s, int n)
{ {
int i; int i;
eqn res = (eqn) (xcalloc (n, sizeof (struct eqn))); eqn res = (eqn) (xcalloc (n, sizeof (struct eqn_d)));
for (i = n - 1; i >= 0; i--) for (i = n - 1; i >= 0; i--)
{ {

View File

@ -55,25 +55,25 @@ along with GCC; see the file COPYING3. If not see
See expr.h for documentation of these optabs. */ See expr.h for documentation of these optabs. */
#if GCC_VERSION >= 4000 #if GCC_VERSION >= 4000
__extension__ struct optab optab_table[OTI_MAX] __extension__ struct optab_d optab_table[OTI_MAX]
= { [0 ... OTI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1].insn_code = { [0 ... OTI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1].insn_code
= CODE_FOR_nothing }; = CODE_FOR_nothing };
#else #else
/* init_insn_codes will do runtime initialization otherwise. */ /* init_insn_codes will do runtime initialization otherwise. */
struct optab optab_table[OTI_MAX]; struct optab_d optab_table[OTI_MAX];
#endif #endif
rtx libfunc_table[LTI_MAX]; rtx libfunc_table[LTI_MAX];
/* Tables of patterns for converting one mode to another. */ /* Tables of patterns for converting one mode to another. */
#if GCC_VERSION >= 4000 #if GCC_VERSION >= 4000
__extension__ struct convert_optab convert_optab_table[COI_MAX] __extension__ struct convert_optab_d convert_optab_table[COI_MAX]
= { [0 ... COI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1] = { [0 ... COI_MAX - 1].handlers[0 ... NUM_MACHINE_MODES - 1]
[0 ... NUM_MACHINE_MODES - 1].insn_code [0 ... NUM_MACHINE_MODES - 1].insn_code
= CODE_FOR_nothing }; = CODE_FOR_nothing };
#else #else
/* init_convert_optab will do runtime initialization otherwise. */ /* init_convert_optab will do runtime initialization otherwise. */
struct convert_optab convert_optab_table[COI_MAX]; struct convert_optab_d convert_optab_table[COI_MAX];
#endif #endif
/* Contains the optab used for each rtx code. */ /* Contains the optab used for each rtx code. */
@ -2248,7 +2248,7 @@ sign_expand_binop (enum machine_mode mode, optab uoptab, optab soptab,
{ {
rtx temp; rtx temp;
optab direct_optab = unsignedp ? uoptab : soptab; optab direct_optab = unsignedp ? uoptab : soptab;
struct optab wide_soptab; struct optab_d wide_soptab;
/* Do it without widening, if possible. */ /* Do it without widening, if possible. */
temp = expand_binop (mode, direct_optab, op0, op1, target, temp = expand_binop (mode, direct_optab, op0, op1, target,

View File

@ -1,5 +1,5 @@
/* Definitions for code generation pass of GNU compiler. /* Definitions for code generation pass of GNU compiler.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
@ -43,29 +43,30 @@ struct optab_handlers
enum insn_code insn_code; enum insn_code insn_code;
}; };
struct optab struct optab_d
{ {
enum rtx_code code; enum rtx_code code;
const char *libcall_basename; const char *libcall_basename;
char libcall_suffix; char libcall_suffix;
void (*libcall_gen)(struct optab *, const char *name, char suffix, enum machine_mode); void (*libcall_gen)(struct optab_d *, const char *name, char suffix,
enum machine_mode);
struct optab_handlers handlers[NUM_MACHINE_MODES]; struct optab_handlers handlers[NUM_MACHINE_MODES];
}; };
typedef struct optab * optab; typedef struct optab_d * optab;
/* A convert_optab is for some sort of conversion operation between /* A convert_optab is for some sort of conversion operation between
modes. The first array index is the destination mode, the second modes. The first array index is the destination mode, the second
is the source mode. */ is the source mode. */
struct convert_optab struct convert_optab_d
{ {
enum rtx_code code; enum rtx_code code;
const char *libcall_basename; const char *libcall_basename;
void (*libcall_gen)(struct convert_optab *, const char *name, void (*libcall_gen)(struct convert_optab_d *, const char *name,
enum machine_mode, enum machine_mode,
enum machine_mode); enum machine_mode);
struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; struct optab_handlers handlers[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
}; };
typedef struct convert_optab *convert_optab; typedef struct convert_optab_d *convert_optab;
/* Given an enum insn_code, access the function to construct /* Given an enum insn_code, access the function to construct
the body of that kind of insn. */ the body of that kind of insn. */
@ -369,7 +370,7 @@ enum optab_index
OTI_MAX OTI_MAX
}; };
extern struct optab optab_table[OTI_MAX]; extern struct optab_d optab_table[OTI_MAX];
#define ssadd_optab (&optab_table[OTI_ssadd]) #define ssadd_optab (&optab_table[OTI_ssadd])
#define usadd_optab (&optab_table[OTI_usadd]) #define usadd_optab (&optab_table[OTI_usadd])
@ -571,7 +572,7 @@ enum convert_optab_index
COI_MAX COI_MAX
}; };
extern struct convert_optab convert_optab_table[COI_MAX]; extern struct convert_optab_d convert_optab_table[COI_MAX];
#define sext_optab (&convert_optab_table[COI_sext]) #define sext_optab (&convert_optab_table[COI_sext])
#define zext_optab (&convert_optab_table[COI_zext]) #define zext_optab (&convert_optab_table[COI_zext])

View File

@ -1152,14 +1152,14 @@ update_properties_after_pass (void *data)
static void static void
add_ipa_transform_pass (void *data) add_ipa_transform_pass (void *data)
{ {
struct ipa_opt_pass *ipa_pass = (struct ipa_opt_pass *) data; struct ipa_opt_pass_d *ipa_pass = (struct ipa_opt_pass_d *) data;
VEC_safe_push (ipa_opt_pass, heap, cfun->ipa_transforms_to_apply, ipa_pass); VEC_safe_push (ipa_opt_pass, heap, cfun->ipa_transforms_to_apply, ipa_pass);
} }
/* Execute summary generation for all of the passes in IPA_PASS. */ /* Execute summary generation for all of the passes in IPA_PASS. */
static void static void
execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass) execute_ipa_summary_passes (struct ipa_opt_pass_d *ipa_pass)
{ {
while (ipa_pass) while (ipa_pass)
{ {
@ -1173,7 +1173,7 @@ execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass)
ipa_pass->generate_summary (); ipa_pass->generate_summary ();
pass_fini_dump_file (pass); pass_fini_dump_file (pass);
} }
ipa_pass = (struct ipa_opt_pass *)ipa_pass->pass.next; ipa_pass = (struct ipa_opt_pass_d *)ipa_pass->pass.next;
} }
} }
@ -1181,7 +1181,7 @@ execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass)
static void static void
execute_one_ipa_transform_pass (struct cgraph_node *node, execute_one_ipa_transform_pass (struct cgraph_node *node,
struct ipa_opt_pass *ipa_pass) struct ipa_opt_pass_d *ipa_pass)
{ {
struct opt_pass *pass = &ipa_pass->pass; struct opt_pass *pass = &ipa_pass->pass;
unsigned int todo_after = 0; unsigned int todo_after = 0;
@ -1353,7 +1353,7 @@ execute_ipa_pass_list (struct opt_pass *pass)
{ {
if (!quiet_flag && !cfun) if (!quiet_flag && !cfun)
fprintf (stderr, " <summary generate>"); fprintf (stderr, " <summary generate>");
execute_ipa_summary_passes ((struct ipa_opt_pass *) pass); execute_ipa_summary_passes ((struct ipa_opt_pass_d *) pass);
} }
summaries_generated = true; summaries_generated = true;
} }

View File

@ -1,3 +1,7 @@
2009-05-15 Ian Lance Taylor <iant@google.com>
* gcc.dg/Wcxx-compat-10.c: New testcase.
2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org> 2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 16302 PR 16302

View File

@ -0,0 +1,73 @@
/* { dg-do compile } */
/* { dg-options "-Wc++-compat" } */
struct s1 { int f; };
typedef int s2;
void
f1 ()
{
typedef int s1;
struct s2 { int f; };
}
struct s3 { int f; };
typedef struct s3 s3;
typedef struct s4 s4;
struct s4 { int f; };
struct s5 { int f; }; /* { dg-message "note: originally defined here" } */
typedef int s5; /* { dg-warning "invalid in C\[+\]\[+\]" } */
typedef int s6; /* { dg-message "note: originally defined here" } */
struct s6 { int f; }; /* { dg-warning "invalid in C\[+\]\[+\]" } */
void
f2 ()
{
struct s7 { int f; }; /* { dg-message "note: originally defined here" } */
typedef int s7; /* { dg-warning "invalid in C\[+\]\[+\]" } */
typedef int s8; /* { dg-message "note: originally defined here" } */
struct s8 { int f; }; /* { dg-warning "invalid in C\[+\]\[+\]" } */
struct s9 { int f; };
{ typedef int s9; }
typedef int s10;
{ struct s10 { int f; }; }
}
enum e1 { A };
typedef int e2;
void
f3 ()
{
typedef int e1;
enum e2 { B };
}
enum e3 { C };
typedef enum e3 e3;
enum e5 { E }; /* { dg-message "note: originally defined here" } */
typedef int e5; /* { dg-warning "invalid in C\[+\]\[+\]" } */
typedef int e6; /* { dg-message "note: originally defined here" } */
enum e6 { F }; /* { dg-warning "invalid in C\[+\]\[+\]" } */
void
f4 ()
{
enum e7 { G }; /* { dg-message "note: originally defined here" } */
typedef int e7; /* { dg-warning "invalid in C\[+\]\[+\]" } */
typedef int e8; /* { dg-message "note: originally defined here" } */
enum e8 { H }; /* { dg-warning "invalid in C\[+\]\[+\]" } */
enum e9 { I };
{ typedef int e9; }
typedef int e10;
{ enum e10 { J }; }
}

View File

@ -917,7 +917,7 @@ static struct label_record
/* Callback for for_each_eh_region. Helper for cleanup_dead_labels. */ /* Callback for for_each_eh_region. Helper for cleanup_dead_labels. */
static void static void
update_eh_label (struct eh_region *region) update_eh_label (struct eh_region_d *region)
{ {
tree old_label = get_eh_region_tree_label (region); tree old_label = get_eh_region_tree_label (region);
if (old_label) if (old_label)

View File

@ -87,7 +87,7 @@ struct_ptr_hash (const void *a)
of space by only allocating memory for those that can throw. */ of space by only allocating memory for those that can throw. */
static void static void
record_stmt_eh_region (struct eh_region *region, gimple t) record_stmt_eh_region (struct eh_region_d *region, gimple t)
{ {
if (!region) if (!region)
return; return;
@ -371,7 +371,7 @@ struct leh_state
/* What's "current" while constructing the eh region tree. These /* What's "current" while constructing the eh region tree. These
correspond to variables of the same name in cfun->eh, which we correspond to variables of the same name in cfun->eh, which we
don't have easy access to. */ don't have easy access to. */
struct eh_region *cur_region; struct eh_region_d *cur_region;
/* Processing of TRY_FINALLY requires a bit more state. This is /* Processing of TRY_FINALLY requires a bit more state. This is
split out into a separate structure so that we don't have to split out into a separate structure so that we don't have to
@ -395,7 +395,7 @@ struct leh_tf_state
struct leh_state *outer; struct leh_state *outer;
/* The exception region created for it. */ /* The exception region created for it. */
struct eh_region *region; struct eh_region_d *region;
/* The goto queue. */ /* The goto queue. */
struct goto_queue_node *goto_queue; struct goto_queue_node *goto_queue;
@ -1646,7 +1646,7 @@ lower_try_finally (struct leh_state *state, gimple tp)
static gimple_seq static gimple_seq
lower_catch (struct leh_state *state, gimple tp) lower_catch (struct leh_state *state, gimple tp)
{ {
struct eh_region *try_region; struct eh_region_d *try_region;
struct leh_state this_state; struct leh_state this_state;
gimple_stmt_iterator gsi; gimple_stmt_iterator gsi;
tree out_label; tree out_label;
@ -1665,7 +1665,7 @@ lower_catch (struct leh_state *state, gimple tp)
out_label = NULL; out_label = NULL;
for (gsi = gsi_start (gimple_try_cleanup (tp)); !gsi_end_p (gsi); ) for (gsi = gsi_start (gimple_try_cleanup (tp)); !gsi_end_p (gsi); )
{ {
struct eh_region *catch_region; struct eh_region_d *catch_region;
tree eh_label; tree eh_label;
gimple x, gcatch; gimple x, gcatch;
@ -1707,7 +1707,7 @@ static gimple_seq
lower_eh_filter (struct leh_state *state, gimple tp) lower_eh_filter (struct leh_state *state, gimple tp)
{ {
struct leh_state this_state; struct leh_state this_state;
struct eh_region *this_region; struct eh_region_d *this_region;
gimple inner; gimple inner;
tree eh_label; tree eh_label;
@ -1744,7 +1744,7 @@ static gimple_seq
lower_cleanup (struct leh_state *state, gimple tp) lower_cleanup (struct leh_state *state, gimple tp)
{ {
struct leh_state this_state; struct leh_state this_state;
struct eh_region *this_region; struct eh_region_d *this_region;
struct leh_tf_state fake_tf; struct leh_tf_state fake_tf;
gimple_seq result; gimple_seq result;
@ -1947,7 +1947,7 @@ struct gimple_opt_pass pass_lower_eh =
/* Construct EH edges for STMT. */ /* Construct EH edges for STMT. */
static void static void
make_eh_edge (struct eh_region *region, void *data) make_eh_edge (struct eh_region_d *region, void *data)
{ {
gimple stmt; gimple stmt;
tree lab; tree lab;
@ -2026,7 +2026,7 @@ redirect_eh_edge (edge e, basic_block new_bb)
bool is_resx; bool is_resx;
bool inlinable = false; bool inlinable = false;
tree label = gimple_block_label (new_bb); tree label = gimple_block_label (new_bb);
struct eh_region *r; struct eh_region_d *r;
if (gimple_code (stmt) == GIMPLE_RESX) if (gimple_code (stmt) == GIMPLE_RESX)
{ {
@ -2066,7 +2066,7 @@ static bool mark_eh_edge_found_error;
field, output error if something goes wrong. */ field, output error if something goes wrong. */
static void static void
mark_eh_edge (struct eh_region *region, void *data) mark_eh_edge (struct eh_region_d *region, void *data)
{ {
gimple stmt; gimple stmt;
tree lab; tree lab;
@ -2958,7 +2958,7 @@ struct update_info
operands from DATA->bb_to_remove. */ operands from DATA->bb_to_remove. */
static void static void
make_eh_edge_and_update_phi (struct eh_region *region, void *data) make_eh_edge_and_update_phi (struct eh_region_d *region, void *data)
{ {
struct update_info *info = (struct update_info *) data; struct update_info *info = (struct update_info *) data;
edge e, e2; edge e, e2;

View File

@ -164,7 +164,7 @@ struct cgraph_node_set_def;
/* Description of IPA pass with generate summary, write, execute, read and /* Description of IPA pass with generate summary, write, execute, read and
transform stages. */ transform stages. */
struct ipa_opt_pass struct ipa_opt_pass_d
{ {
struct opt_pass pass; struct opt_pass pass;
@ -401,10 +401,10 @@ extern struct gimple_opt_pass pass_local_pure_const;
extern struct gimple_opt_pass pass_tracer; extern struct gimple_opt_pass pass_tracer;
/* IPA Passes */ /* IPA Passes */
extern struct ipa_opt_pass pass_ipa_inline; extern struct ipa_opt_pass_d pass_ipa_inline;
extern struct ipa_opt_pass pass_ipa_cp; extern struct ipa_opt_pass_d pass_ipa_cp;
extern struct ipa_opt_pass pass_ipa_reference; extern struct ipa_opt_pass_d pass_ipa_reference;
extern struct ipa_opt_pass pass_ipa_pure_const; extern struct ipa_opt_pass_d pass_ipa_pure_const;
extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg; extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg;
extern struct simple_ipa_opt_pass pass_ipa_early_inline; extern struct simple_ipa_opt_pass pass_ipa_early_inline;

View File

@ -1,5 +1,5 @@
/* Predictive commoning. /* Predictive commoning.
Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
@ -210,7 +210,7 @@ along with GCC; see the file COPYING3. If not see
/* Data references (or phi nodes that carry data reference values across /* Data references (or phi nodes that carry data reference values across
loop iterations). */ loop iterations). */
typedef struct dref typedef struct dref_d
{ {
/* The reference itself. */ /* The reference itself. */
struct data_reference *ref; struct data_reference *ref;
@ -775,7 +775,7 @@ split_data_refs_to_components (struct loop *loop,
comps[ca] = comp; comps[ca] = comp;
} }
dataref = XCNEW (struct dref); dataref = XCNEW (struct dref_d);
dataref->ref = dr; dataref->ref = dr;
dataref->stmt = DR_STMT (dr); dataref->stmt = DR_STMT (dr);
dataref->offset = double_int_zero; dataref->offset = double_int_zero;
@ -1126,7 +1126,7 @@ find_looparound_phi (struct loop *loop, dref ref, dref root)
static void static void
insert_looparound_copy (chain_p chain, dref ref, gimple phi) insert_looparound_copy (chain_p chain, dref ref, gimple phi)
{ {
dref nw = XCNEW (struct dref), aref; dref nw = XCNEW (struct dref_d), aref;
unsigned i; unsigned i;
nw->stmt = phi; nw->stmt = phi;
@ -2339,7 +2339,7 @@ combine_chains (chain_p ch1, chain_p ch2)
for (i = 0; (VEC_iterate (dref, ch1->refs, i, r1) for (i = 0; (VEC_iterate (dref, ch1->refs, i, r1)
&& VEC_iterate (dref, ch2->refs, i, r2)); i++) && VEC_iterate (dref, ch2->refs, i, r2)); i++)
{ {
nw = XCNEW (struct dref); nw = XCNEW (struct dref_d);
nw->stmt = stmt_combining_refs (r1, r2); nw->stmt = stmt_combining_refs (r1, r2);
nw->distance = r1->distance; nw->distance = r1->distance;

View File

@ -1,3 +1,8 @@
2009-05-15 Ian Lance Taylor <iant@google.com>
* include/cpplib.h (enum cpp_builtin_type): Rename from enum
builtin_type. Change all uses.
2009-05-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> 2009-05-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR cpp/36674 PR cpp/36674

View File

@ -578,7 +578,7 @@ enum node_type
/* Different flavors of builtin macro. _Pragma is an operator, but we /* Different flavors of builtin macro. _Pragma is an operator, but we
handle it with the builtin code for efficiency reasons. */ handle it with the builtin code for efficiency reasons. */
enum builtin_type enum cpp_builtin_type
{ {
BT_SPECLINE = 0, /* `__LINE__' */ BT_SPECLINE = 0, /* `__LINE__' */
BT_DATE, /* `__DATE__' */ BT_DATE, /* `__DATE__' */
@ -624,7 +624,7 @@ union GTY(()) _cpp_hashnode_value {
/* Answers to an assertion. */ /* Answers to an assertion. */
struct answer * GTY ((tag ("NTV_ANSWER"))) answers; struct answer * GTY ((tag ("NTV_ANSWER"))) answers;
/* Code for a builtin macro. */ /* Code for a builtin macro. */
enum builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin; enum cpp_builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin;
/* Macro argument index. */ /* Macro argument index. */
unsigned short GTY ((tag ("NTV_ARGUMENT"))) arg_index; unsigned short GTY ((tag ("NTV_ARGUMENT"))) arg_index;
}; };

View File

@ -419,7 +419,7 @@ cpp_init_special_builtins (cpp_reader *pfile)
if (b->always_warn_if_redefined if (b->always_warn_if_redefined
|| CPP_OPTION (pfile, warn_builtin_macro_redefined)) || CPP_OPTION (pfile, warn_builtin_macro_redefined))
hp->flags |= NODE_WARN; hp->flags |= NODE_WARN;
hp->value.builtin = (enum builtin_type) b->value; hp->value.builtin = (enum cpp_builtin_type) b->value;
} }
} }