mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 10:30:56 +08:00
Make LTO's implementation of LANG_HOOKS_TYPE_FOR_SIZE the default
gcc/jit/ChangeLog: * dummy-frontend.c (jit_langhook_type_for_size): Delete. (LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine. gcc/ChangeLog: * langhooks-def.h (lhd_type_for_size): New decl. (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size. * langhooks.c (lhd_type_for_size): New function, taken from lto_type_for_size. gcc/lto/ChangeLog: * lto-lang.c (builtin_type_for_size): Convert call to lto_type_for_size to one through the langhook. (lto_type_for_size): Move to langhooks.c and rename to lhd_type_for_size. (LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine. From-SVN: r244646
This commit is contained in:
parent
86eb502b93
commit
8a3a6ab451
@ -1,3 +1,10 @@
|
||||
2017-01-19 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* langhooks-def.h (lhd_type_for_size): New decl.
|
||||
(LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
|
||||
* langhooks.c (lhd_type_for_size): New function, taken from
|
||||
lto_type_for_size.
|
||||
|
||||
2017-01-19 Pat Haugen <pthaugen@us.ibm.com>
|
||||
|
||||
* config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-01-19 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* dummy-frontend.c (jit_langhook_type_for_size): Delete.
|
||||
(LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine.
|
||||
|
||||
2017-01-18 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* dummy-frontend.c (jit_langhook_type_for_size): Implement, using
|
||||
|
@ -207,55 +207,6 @@ jit_langhook_type_for_mode (enum machine_mode mode, int unsignedp)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Return an integer type with PRECISION bits of precision,
|
||||
that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */
|
||||
|
||||
static tree
|
||||
jit_langhook_type_for_size (unsigned precision, int unsignedp)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (precision == TYPE_PRECISION (integer_type_node))
|
||||
return unsignedp ? unsigned_type_node : integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (signed_char_type_node))
|
||||
return unsignedp ? unsigned_char_type_node : signed_char_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (short_integer_type_node))
|
||||
return unsignedp ? short_unsigned_type_node : short_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_integer_type_node))
|
||||
return unsignedp ? long_unsigned_type_node : long_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_long_integer_type_node))
|
||||
return unsignedp
|
||||
? long_long_unsigned_type_node
|
||||
: long_long_integer_type_node;
|
||||
|
||||
for (i = 0; i < NUM_INT_N_ENTS; i ++)
|
||||
if (int_n_enabled_p[i]
|
||||
&& precision == int_n_data[i].bitsize)
|
||||
return (unsignedp ? int_n_trees[i].unsigned_type
|
||||
: int_n_trees[i].signed_type);
|
||||
|
||||
if (precision <= TYPE_PRECISION (intQI_type_node))
|
||||
return unsignedp ? unsigned_intQI_type_node : intQI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intHI_type_node))
|
||||
return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intSI_type_node))
|
||||
return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intDI_type_node))
|
||||
return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intTI_type_node))
|
||||
return unsignedp ? unsigned_intTI_type_node : intTI_type_node;
|
||||
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
/* Record a builtin function. We just ignore builtin functions. */
|
||||
|
||||
static tree
|
||||
@ -295,9 +246,6 @@ jit_langhook_getdecls (void)
|
||||
#undef LANG_HOOKS_TYPE_FOR_MODE
|
||||
#define LANG_HOOKS_TYPE_FOR_MODE jit_langhook_type_for_mode
|
||||
|
||||
#undef LANG_HOOKS_TYPE_FOR_SIZE
|
||||
#define LANG_HOOKS_TYPE_FOR_SIZE jit_langhook_type_for_size
|
||||
|
||||
#undef LANG_HOOKS_BUILTIN_FUNCTION
|
||||
#define LANG_HOOKS_BUILTIN_FUNCTION jit_langhook_builtin_function
|
||||
|
||||
|
@ -52,6 +52,7 @@ extern void lhd_print_error_function (diagnostic_context *,
|
||||
const char *, struct diagnostic_info *);
|
||||
extern void lhd_set_decl_assembler_name (tree);
|
||||
extern bool lhd_warn_unused_global_decl (const_tree);
|
||||
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);
|
||||
extern void lhd_register_builtin_type (tree, const char *);
|
||||
@ -165,6 +166,7 @@ extern tree lhd_unit_size_without_reusable_padding (tree);
|
||||
|
||||
#define LANG_HOOKS_MAKE_TYPE lhd_make_node
|
||||
#define LANG_HOOKS_CLASSIFY_RECORD NULL
|
||||
#define LANG_HOOKS_TYPE_FOR_SIZE lhd_type_for_size
|
||||
#define LANG_HOOKS_INCOMPLETE_TYPE_ERROR lhd_incomplete_type_error
|
||||
#define LANG_HOOKS_GENERIC_TYPE_P hook_bool_const_tree_false
|
||||
#define LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS hook_tree_const_tree_null
|
||||
|
@ -469,6 +469,56 @@ lhd_make_node (enum tree_code code)
|
||||
return make_node (code);
|
||||
}
|
||||
|
||||
/* Default implementation of LANG_HOOKS_TYPE_FOR_SIZE.
|
||||
Return an integer type with PRECISION bits of precision,
|
||||
that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */
|
||||
|
||||
tree
|
||||
lhd_type_for_size (unsigned precision, int unsignedp)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (precision == TYPE_PRECISION (integer_type_node))
|
||||
return unsignedp ? unsigned_type_node : integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (signed_char_type_node))
|
||||
return unsignedp ? unsigned_char_type_node : signed_char_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (short_integer_type_node))
|
||||
return unsignedp ? short_unsigned_type_node : short_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_integer_type_node))
|
||||
return unsignedp ? long_unsigned_type_node : long_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_long_integer_type_node))
|
||||
return unsignedp
|
||||
? long_long_unsigned_type_node
|
||||
: long_long_integer_type_node;
|
||||
|
||||
for (i = 0; i < NUM_INT_N_ENTS; i ++)
|
||||
if (int_n_enabled_p[i]
|
||||
&& precision == int_n_data[i].bitsize)
|
||||
return (unsignedp ? int_n_trees[i].unsigned_type
|
||||
: int_n_trees[i].signed_type);
|
||||
|
||||
if (precision <= TYPE_PRECISION (intQI_type_node))
|
||||
return unsignedp ? unsigned_intQI_type_node : intQI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intHI_type_node))
|
||||
return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intSI_type_node))
|
||||
return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intDI_type_node))
|
||||
return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intTI_type_node))
|
||||
return unsignedp ? unsigned_intTI_type_node : intTI_type_node;
|
||||
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
HOST_WIDE_INT
|
||||
lhd_to_target_charset (HOST_WIDE_INT c)
|
||||
{
|
||||
|
@ -1,3 +1,11 @@
|
||||
2017-01-19 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* lto-lang.c (builtin_type_for_size): Convert call to
|
||||
lto_type_for_size to one through the langhook.
|
||||
(lto_type_for_size): Move to langhooks.c and rename to
|
||||
lhd_type_for_size.
|
||||
(LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine.
|
||||
|
||||
2017-01-18 Maxim Ostapenko <m.ostapenko@samsung.com>
|
||||
|
||||
PR lto/79061
|
||||
|
@ -36,8 +36,6 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "lto.h"
|
||||
#include "cilk.h"
|
||||
|
||||
static tree lto_type_for_size (unsigned, int);
|
||||
|
||||
static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
|
||||
static tree handle_leaf_attribute (tree *, tree, tree, int, bool *);
|
||||
static tree handle_const_attribute (tree *, tree, tree, int, bool *);
|
||||
@ -570,7 +568,7 @@ def_fn_type (builtin_type def, builtin_type ret, bool var, int n, ...)
|
||||
static tree
|
||||
builtin_type_for_size (int size, bool unsignedp)
|
||||
{
|
||||
tree type = lto_type_for_size (size, unsignedp);
|
||||
tree type = lang_hooks.types.type_for_size (size, unsignedp);
|
||||
return type ? type : error_mark_node;
|
||||
}
|
||||
|
||||
@ -867,56 +865,6 @@ lto_post_options (const char **pfilename ATTRIBUTE_UNUSED)
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Return an integer type with PRECISION bits of precision,
|
||||
that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */
|
||||
|
||||
static tree
|
||||
lto_type_for_size (unsigned precision, int unsignedp)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (precision == TYPE_PRECISION (integer_type_node))
|
||||
return unsignedp ? unsigned_type_node : integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (signed_char_type_node))
|
||||
return unsignedp ? unsigned_char_type_node : signed_char_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (short_integer_type_node))
|
||||
return unsignedp ? short_unsigned_type_node : short_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_integer_type_node))
|
||||
return unsignedp ? long_unsigned_type_node : long_integer_type_node;
|
||||
|
||||
if (precision == TYPE_PRECISION (long_long_integer_type_node))
|
||||
return unsignedp
|
||||
? long_long_unsigned_type_node
|
||||
: long_long_integer_type_node;
|
||||
|
||||
for (i = 0; i < NUM_INT_N_ENTS; i ++)
|
||||
if (int_n_enabled_p[i]
|
||||
&& precision == int_n_data[i].bitsize)
|
||||
return (unsignedp ? int_n_trees[i].unsigned_type
|
||||
: int_n_trees[i].signed_type);
|
||||
|
||||
if (precision <= TYPE_PRECISION (intQI_type_node))
|
||||
return unsignedp ? unsigned_intQI_type_node : intQI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intHI_type_node))
|
||||
return unsignedp ? unsigned_intHI_type_node : intHI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intSI_type_node))
|
||||
return unsignedp ? unsigned_intSI_type_node : intSI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intDI_type_node))
|
||||
return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
|
||||
|
||||
if (precision <= TYPE_PRECISION (intTI_type_node))
|
||||
return unsignedp ? unsigned_intTI_type_node : intTI_type_node;
|
||||
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
|
||||
/* Return a data type that has machine mode MODE.
|
||||
If the mode is an integer,
|
||||
then UNSIGNEDP selects between signed and unsigned types.
|
||||
@ -1364,8 +1312,6 @@ static void lto_init_ts (void)
|
||||
#define LANG_HOOKS_GET_ALIAS_SET gimple_get_alias_set
|
||||
#undef LANG_HOOKS_TYPE_FOR_MODE
|
||||
#define LANG_HOOKS_TYPE_FOR_MODE lto_type_for_mode
|
||||
#undef LANG_HOOKS_TYPE_FOR_SIZE
|
||||
#define LANG_HOOKS_TYPE_FOR_SIZE lto_type_for_size
|
||||
#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME
|
||||
#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lto_set_decl_assembler_name
|
||||
#undef LANG_HOOKS_GLOBAL_BINDINGS_P
|
||||
|
Loading…
x
Reference in New Issue
Block a user