middle-end/AArch64: Fix bootstrap after vec changes
The build is broken since a3d3e8c362
since it's deleted the ability to pass
vec<> by value and now must be past by reference.
However some language hooks used by AArch64 were not updated and breaks the
build on AArch64. This patch updates these hooks.
gcc/c/ChangeLog:
* c-decl.c (c_simulate_enum_decl): Pass vec<> by pointer.
* c-tree.h (c_simulate_enum_decl): Likewise.
gcc/ChangeLog:
* config/aarch64/aarch64-sve-builtins.cc (register_svpattern,
register_svprfop): Pass vec<> by pointer.
* langhooks-def.h (lhd_simulate_enum_decl): Likewise.
* langhooks.c (lhd_simulate_enum_decl): Likewise.
* langhooks.h (struct lang_hooks_for_types): Likewise.
gcc/cp/ChangeLog:
* cp-objcp-common.h (cxx_simulate_enum_decl): Pass vec<> by pointer.
* decl.c (cxx_simulate_enum_decl): Likewise.
This commit is contained in:
parent
3c94db20be
commit
6b0bde7eef
8 changed files with 11 additions and 9 deletions
|
@ -9379,7 +9379,7 @@ build_enumerator (location_t decl_loc, location_t loc,
|
|||
|
||||
tree
|
||||
c_simulate_enum_decl (location_t loc, const char *name,
|
||||
vec<string_int_pair> values)
|
||||
vec<string_int_pair> *values_ptr)
|
||||
{
|
||||
location_t saved_loc = input_location;
|
||||
input_location = loc;
|
||||
|
@ -9389,6 +9389,7 @@ c_simulate_enum_decl (location_t loc, const char *name,
|
|||
|
||||
tree value_chain = NULL_TREE;
|
||||
string_int_pair *value;
|
||||
vec<string_int_pair> values = *values_ptr;
|
||||
unsigned int i;
|
||||
FOR_EACH_VEC_ELT (values, i, value)
|
||||
{
|
||||
|
|
|
@ -595,7 +595,7 @@ extern void finish_function (location_t = input_location);
|
|||
extern tree finish_struct (location_t, tree, tree, tree,
|
||||
class c_struct_parse_info *);
|
||||
extern tree c_simulate_enum_decl (location_t, const char *,
|
||||
vec<string_int_pair>);
|
||||
vec<string_int_pair> *);
|
||||
extern struct c_arg_info *build_arg_info (void);
|
||||
extern struct c_arg_info *get_parm_info (bool, tree);
|
||||
extern tree grokfield (location_t, struct c_declarator *,
|
||||
|
|
|
@ -3499,7 +3499,7 @@ register_svpattern ()
|
|||
#undef PUSH
|
||||
|
||||
acle_svpattern = lang_hooks.types.simulate_enum_decl (input_location,
|
||||
"svpattern", values);
|
||||
"svpattern", &values);
|
||||
}
|
||||
|
||||
/* Register the svprfop enum. */
|
||||
|
@ -3513,7 +3513,7 @@ register_svprfop ()
|
|||
#undef PUSH
|
||||
|
||||
acle_svprfop = lang_hooks.types.simulate_enum_decl (input_location,
|
||||
"svprfop", values);
|
||||
"svprfop", &values);
|
||||
}
|
||||
|
||||
/* Implement #pragma GCC aarch64 "arm_sve.h". */
|
||||
|
|
|
@ -38,7 +38,7 @@ extern bool cp_handle_option (size_t, const char *, HOST_WIDE_INT, int,
|
|||
location_t, const struct cl_option_handlers *);
|
||||
extern tree cxx_make_type_hook (tree_code);
|
||||
extern tree cxx_simulate_enum_decl (location_t, const char *,
|
||||
vec<string_int_pair>);
|
||||
vec<string_int_pair> *);
|
||||
|
||||
/* Lang hooks that are shared between C++ and ObjC++ are defined here. Hooks
|
||||
specific to C++ or ObjC++ go in cp/cp-lang.c and objcp/objcp-lang.c,
|
||||
|
|
|
@ -16408,7 +16408,7 @@ lookup_enumerator (tree enumtype, tree name)
|
|||
|
||||
tree
|
||||
cxx_simulate_enum_decl (location_t loc, const char *name,
|
||||
vec<string_int_pair> values)
|
||||
vec<string_int_pair> *values)
|
||||
{
|
||||
location_t saved_loc = input_location;
|
||||
input_location = loc;
|
||||
|
|
|
@ -55,7 +55,7 @@ extern void lhd_set_decl_assembler_name (tree decl);
|
|||
extern void lhd_overwrite_decl_assembler_name (tree decl, tree name);
|
||||
extern bool lhd_warn_unused_global_decl (const_tree);
|
||||
extern tree lhd_simulate_enum_decl (location_t, const char *,
|
||||
vec<string_int_pair>);
|
||||
vec<string_int_pair> *);
|
||||
extern tree lhd_type_for_size (unsigned precision, int unsignedp);
|
||||
extern void lhd_incomplete_type_error (location_t, const_tree, const_tree);
|
||||
extern tree lhd_type_promotes_to (tree);
|
||||
|
|
|
@ -485,7 +485,7 @@ lhd_make_node (enum tree_code code)
|
|||
might be reusable elsewhere. */
|
||||
tree
|
||||
lhd_simulate_enum_decl (location_t loc, const char *name,
|
||||
vec<string_int_pair> values)
|
||||
vec<string_int_pair> *values_ptr)
|
||||
{
|
||||
tree enumtype = lang_hooks.types.make_type (ENUMERAL_TYPE);
|
||||
tree enumdecl = build_decl (loc, TYPE_DECL, get_identifier (name), enumtype);
|
||||
|
@ -493,6 +493,7 @@ lhd_simulate_enum_decl (location_t loc, const char *name,
|
|||
|
||||
tree value_chain = NULL_TREE;
|
||||
string_int_pair *value;
|
||||
vec<string_int_pair> values = *values_ptr;
|
||||
unsigned int i;
|
||||
FOR_EACH_VEC_ELT (values, i, value)
|
||||
{
|
||||
|
|
|
@ -66,7 +66,7 @@ struct lang_hooks_for_types
|
|||
|
||||
/* Make an enum type with the given name and values, associating
|
||||
them all with the given source location. */
|
||||
tree (*simulate_enum_decl) (location_t, const char *, vec<string_int_pair>);
|
||||
tree (*simulate_enum_decl) (location_t, const char *, vec<string_int_pair> *);
|
||||
|
||||
/* Return what kind of RECORD_TYPE this is, mainly for purposes of
|
||||
debug information. If not defined, record types are assumed to
|
||||
|
|
Loading…
Add table
Reference in a new issue