mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
7d47ae1d64
commit
7e5487a214
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
41
gcc/c-decl.c
41
gcc/c-decl.c
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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. */
|
||||||
|
|
|
||||||
|
|
@ -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. */
|
||||||
|
|
|
||||||
251
gcc/except.c
251
gcc/except.c
|
|
@ -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;
|
||||||
|
|
|
||||||
49
gcc/except.h
49
gcc/except.h
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
58
gcc/gcse.c
58
gcc/gcse.c
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
10
gcc/omega.c
10
gcc/omega.c
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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--)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
10
gcc/optabs.c
10
gcc/optabs.c
|
|
@ -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,
|
||||||
|
|
|
||||||
19
gcc/optabs.h
19
gcc/optabs.h
|
|
@ -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])
|
||||||
|
|
|
||||||
10
gcc/passes.c
10
gcc/passes.c
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 }; }
|
||||||
|
}
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue