From 6a2dd09a650e117e1590752c2f0bba82bdb43b20 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Mon, 1 Jul 2002 23:07:19 +0000 Subject: [PATCH] tree.h: Modify builtin_function interface to take an extra argument ATTRS... * tree.h: Modify builtin_function interface to take an extra argument ATTRS, which is a tree representing an attribute list. * c-decl.c (builtin_function): Accept additional parameter. * objc/objc-act.c (builtin_function): Likewise. * f/com.c (builtin_function): Likewise. * java/decl.c (builtin_function): Likewise. * ada/utils.c (builtin_function): Likewise. * cp/decl.c (builtin_function): Likewise. (builtin_function_1): Likewise. * c-common.c (c_common_nodes_and_builtins): Pass an additional NULL_TREE argument to builtin_function. (builtin_function_2): Likewise. * cp/call.c (build_java_interface_fn_ref): Likewise. * objc/objc-act.c (synth_module_prologue): Likewise. * java/decl.c (java_init_decl_processing): Likewise. * f/com.c (ffe_com_init_0): Likewise. * config/alpha/alpha.c (alpha_init_builtins): Pass an additional NULL_TREE argument builtin_function. * config/arm/arm.c (def_builtin): Likewise. * config/c4x/c4x.c (c4x_init_builtins): Likewise. * config/i386/i386.c (def_builtin): Likewise. * config/ia64/ia64.c (def_builtin): Likewise. * config/rs6000/rs6000.c (def_builtin): Likewise. From-SVN: r55161 --- gcc/ChangeLog | 29 ++++++++++++++++++++ gcc/ada/ChangeLog | 4 +++ gcc/ada/utils.c | 8 ++++-- gcc/c-common.c | 8 ++++-- gcc/c-decl.c | 11 ++++++-- gcc/config/alpha/alpha.c | 15 ++++++---- gcc/config/arm/arm.c | 2 +- gcc/config/c4x/c4x.c | 12 ++++---- gcc/config/i386/i386.c | 9 +++--- gcc/config/ia64/ia64.c | 2 +- gcc/config/rs6000/rs6000.c | 9 +++--- gcc/cp/call.c | 2 +- gcc/cp/decl.c | 28 +++++++++++++------ gcc/f/ChangeLog | 6 ++++ gcc/f/com.c | 24 ++++++++-------- gcc/java/ChangeLog | 6 ++++ gcc/java/decl.c | 56 ++++++++++++++++++++------------------ gcc/objc/objc-act.c | 12 +++++--- gcc/tree.h | 6 ++-- 19 files changed, 167 insertions(+), 82 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a4291b88510..811e9c90ca88 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,32 @@ +2002-07-01 Roger Sayle + + * tree.h: Modify builtin_function interface to take an extra + argument ATTRS, which is a tree representing an attribute list. + + * c-decl.c (builtin_function): Accept additional parameter. + * objc/objc-act.c (builtin_function): Likewise. + * f/com.c (builtin_function): Likewise. + * java/decl.c (builtin_function): Likewise. + * ada/utils.c (builtin_function): Likewise. + * cp/decl.c (builtin_function): Likewise. + (builtin_function_1): Likewise. + + * c-common.c (c_common_nodes_and_builtins): Pass an additional + NULL_TREE argument to builtin_function. (builtin_function_2): + Likewise. + * cp/call.c (build_java_interface_fn_ref): Likewise. + * objc/objc-act.c (synth_module_prologue): Likewise. + * java/decl.c (java_init_decl_processing): Likewise. + * f/com.c (ffe_com_init_0): Likewise. + + * config/alpha/alpha.c (alpha_init_builtins): Pass an additional + NULL_TREE argument to builtin_function. + * config/arm/arm.c (def_builtin): Likewise. + * config/c4x/c4x.c (c4x_init_builtins): Likewise. + * config/i386/i386.c (def_builtin): Likewise. + * config/ia64/ia64.c (def_builtin): Likewise. + * config/rs6000/rs6000.c (def_builtin): Likewise. + 2002-07-01 Zack Weinberg * config/ip2k/t-ip2k: Remove LIBGCC1, CROSS_LIBGCC1, and LIBGCC1_TEST. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9c4c27741130..368a9e1e17cd 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2002-07-01 Roger Sayle + + * ada/utils.c (builtin_function): Accept an additional parameter. + 2002-06-28 Andreas Jaeger PR ada/7144 diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c index d820401f20f5..33980a5f667e 100644 --- a/gcc/ada/utils.c +++ b/gcc/ada/utils.c @@ -1871,15 +1871,17 @@ end_subprog_body () See tree.h for its possible values. If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. If + ATTRS is nonzero, use that for the function attribute list. */ tree -builtin_function (name, type, function_code, class, library_name) +builtin_function (name, type, function_code, class, library_name, attrs) const char *name; tree type; int function_code; enum built_in_class class; const char *library_name; + tree attrs; { tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); @@ -1891,6 +1893,8 @@ builtin_function (name, type, function_code, class, library_name) pushdecl (decl); DECL_BUILT_IN_CLASS (decl) = class; DECL_FUNCTION_CODE (decl) = function_code; + if (attrs) + decl_attributes (&decl, attrs, ATTR_FLAG_BUILT_IN); return decl; } diff --git a/gcc/c-common.c b/gcc/c-common.c index c71f75270066..4438abe2a092 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -3055,7 +3055,7 @@ c_common_nodes_and_builtins () CLASS, \ (FALLBACK_P \ ? (NAME + strlen ("__builtin_")) \ - : NULL)); \ + : NULL), NULL_TREE); \ else \ decl = builtin_function_2 (NAME, \ NAME + strlen ("__builtin_"), \ @@ -3185,7 +3185,8 @@ builtin_function_2 (builtin_name, name, builtin_type, type, function_code, if (builtin_name != 0) { bdecl = builtin_function (builtin_name, builtin_type, function_code, - class, library_name_p ? name : NULL); + class, library_name_p ? name : NULL, + NULL_TREE); if (noreturn_p) { TREE_THIS_VOLATILE (bdecl) = 1; @@ -3195,7 +3196,8 @@ builtin_function_2 (builtin_name, name, builtin_type, type, function_code, if (name != 0 && !flag_no_builtin && !builtin_function_disabled_p (name) && !(nonansi_p && flag_no_nonansi_builtin)) { - decl = builtin_function (name, type, function_code, class, NULL); + decl = builtin_function (name, type, function_code, class, NULL, + NULL_TREE); if (nonansi_p) DECL_BUILT_IN_NONANSI (decl) = 1; if (noreturn_p) diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 23134e385b7b..a32b7835ca1c 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -2961,15 +2961,17 @@ c_make_fname_decl (id, type_dep) See tree.h for its possible values. If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. If + ATTRS is nonzero, use that for the function's attribute list. */ tree -builtin_function (name, type, function_code, class, library_name) +builtin_function (name, type, function_code, class, library_name, attrs) const char *name; tree type; int function_code; enum built_in_class class; const char *library_name; + tree attrs; { tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); DECL_EXTERNAL (decl) = 1; @@ -2991,7 +2993,10 @@ builtin_function (name, type, function_code, class, library_name) C_DECL_ANTICIPATED (decl) = 1; /* Possibly apply some default attributes to this built-in function. */ - decl_attributes (&decl, NULL_TREE, 0); + if (attrs) + decl_attributes (&decl, attrs, ATTR_FLAG_BUILT_IN); + else + decl_attributes (&decl, NULL_TREE, 0); return decl; } diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index b109328d34aa..9e240058e24c 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -6496,7 +6496,8 @@ alpha_init_builtins () p = zero_arg_builtins; for (i = 0; i < ARRAY_SIZE (zero_arg_builtins); ++i, ++p) if ((target_flags & p->target_mask) == p->target_mask) - builtin_function (p->name, ftype, p->code, BUILT_IN_MD, NULL); + builtin_function (p->name, ftype, p->code, BUILT_IN_MD, + NULL, NULL_TREE); ftype = build_function_type_list (long_integer_type_node, long_integer_type_node, NULL_TREE); @@ -6504,7 +6505,8 @@ alpha_init_builtins () p = one_arg_builtins; for (i = 0; i < ARRAY_SIZE (one_arg_builtins); ++i, ++p) if ((target_flags & p->target_mask) == p->target_mask) - builtin_function (p->name, ftype, p->code, BUILT_IN_MD, NULL); + builtin_function (p->name, ftype, p->code, BUILT_IN_MD, + NULL, NULL_TREE); ftype = build_function_type_list (long_integer_type_node, long_integer_type_node, @@ -6513,15 +6515,18 @@ alpha_init_builtins () p = two_arg_builtins; for (i = 0; i < ARRAY_SIZE (two_arg_builtins); ++i, ++p) if ((target_flags & p->target_mask) == p->target_mask) - builtin_function (p->name, ftype, p->code, BUILT_IN_MD, NULL); + builtin_function (p->name, ftype, p->code, BUILT_IN_MD, + NULL, NULL_TREE); ftype = build_function_type (ptr_type_node, void_list_node); builtin_function ("__builtin_thread_pointer", ftype, - ALPHA_BUILTIN_THREAD_POINTER, BUILT_IN_MD, NULL); + ALPHA_BUILTIN_THREAD_POINTER, BUILT_IN_MD, + NULL, NULL_TREE); ftype = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE); builtin_function ("__builtin_set_thread_pointer", ftype, - ALPHA_BUILTIN_SET_THREAD_POINTER, BUILT_IN_MD, NULL); + ALPHA_BUILTIN_SET_THREAD_POINTER, BUILT_IN_MD, + NULL, NULL_TREE); } /* Expand an expression EXP that calls a built-in function, diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 04212dbc2b28..17d77507f60c 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -9303,7 +9303,7 @@ arm_debugger_arg_offset (value, addr) } #define def_builtin(NAME, TYPE, CODE) \ - builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL) + builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL, NULL_TREE) void arm_init_builtins () diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c index ad2ff6dff3ed..1e8814cb584a 100644 --- a/gcc/config/c4x/c4x.c +++ b/gcc/config/c4x/c4x.c @@ -4923,12 +4923,12 @@ c4x_init_builtins () build_function_type (integer_type_node, tree_cons (NULL_TREE, double_type_node, endlink)), - C4X_BUILTIN_FIX, BUILT_IN_MD, NULL); + C4X_BUILTIN_FIX, BUILT_IN_MD, NULL, NULL_TREE); builtin_function ("ansi_ftoi", build_function_type (integer_type_node, tree_cons (NULL_TREE, double_type_node, endlink)), - C4X_BUILTIN_FIX_ANSI, BUILT_IN_MD, NULL); + C4X_BUILTIN_FIX_ANSI, BUILT_IN_MD, NULL, NULL_TREE); if (TARGET_C3X) builtin_function ("fast_imult", build_function_type @@ -4936,24 +4936,24 @@ c4x_init_builtins () tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))), - C4X_BUILTIN_MPYI, BUILT_IN_MD, NULL); + C4X_BUILTIN_MPYI, BUILT_IN_MD, NULL, NULL_TREE); else { builtin_function ("toieee", build_function_type (double_type_node, tree_cons (NULL_TREE, double_type_node, endlink)), - C4X_BUILTIN_TOIEEE, BUILT_IN_MD, NULL); + C4X_BUILTIN_TOIEEE, BUILT_IN_MD, NULL, NULL_TREE); builtin_function ("frieee", build_function_type (double_type_node, tree_cons (NULL_TREE, double_type_node, endlink)), - C4X_BUILTIN_FRIEEE, BUILT_IN_MD, NULL); + C4X_BUILTIN_FRIEEE, BUILT_IN_MD, NULL, NULL_TREE); builtin_function ("fast_invf", build_function_type (double_type_node, tree_cons (NULL_TREE, double_type_node, endlink)), - C4X_BUILTIN_RCPF, BUILT_IN_MD, NULL); + C4X_BUILTIN_RCPF, BUILT_IN_MD, NULL, NULL_TREE); } } diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 46081ba95dc4..faf723c4921a 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11463,10 +11463,11 @@ x86_initialize_trampoline (tramp, fnaddr, cxt) } } -#define def_builtin(MASK, NAME, TYPE, CODE) \ -do { \ - if ((MASK) & target_flags) \ - builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL); \ +#define def_builtin(MASK, NAME, TYPE, CODE) \ +do { \ + if ((MASK) & target_flags) \ + builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, \ + NULL, NULL_TREE); \ } while (0) struct builtin_description diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 4f7380af976e..be83a4d26c82 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -7542,7 +7542,7 @@ ia64_init_builtins () = build_function_type_list (void_type_node, pdi_type_node, NULL_TREE); #define def_builtin(name, type, code) \ - builtin_function ((name), (type), (code), BUILT_IN_MD, NULL) + builtin_function ((name), (type), (code), BUILT_IN_MD, NULL, NULL_TREE) def_builtin ("__sync_val_compare_and_swap_si", si_ftype_psi_si_si, IA64_BUILTIN_VAL_COMPARE_AND_SWAP_SI); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 20cb29942ed4..6fcf8909f72c 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3333,10 +3333,11 @@ rs6000_va_arg (valist, type) /* Builtins. */ -#define def_builtin(MASK, NAME, TYPE, CODE) \ -do { \ - if ((MASK) & target_flags) \ - builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL); \ +#define def_builtin(MASK, NAME, TYPE, CODE) \ +do { \ + if ((MASK) & target_flags) \ + builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, \ + NULL, NULL_TREE); \ } while (0) struct builtin_description diff --git a/gcc/cp/call.c b/gcc/cp/call.c index e6f31510d774..141c7ac25379 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4428,7 +4428,7 @@ build_java_interface_fn_ref (fn, instance) java_iface_lookup_fn = builtin_function ("_Jv_LookupInterfaceMethodIdx", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); } /* Look up the pointer to the runtime java.lang.Class object for `instance'. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e2263fc67073..5d4f78ea6c3a 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -83,7 +83,8 @@ static void set_identifier_type_value_with_scope PARAMS ((tree, tree, struct cp_binding_level *)); static void record_unknown_type PARAMS ((tree, const char *)); static tree builtin_function_1 PARAMS ((const char *, tree, tree, int, - enum built_in_class, const char *)); + enum built_in_class, const char *, + tree)); static tree build_library_fn_1 PARAMS ((tree, enum tree_code, tree)); static int member_function_or_else PARAMS ((tree, tree, enum overload_flags)); static void bad_specifiers PARAMS ((tree, const char *, int, int, int, int, @@ -6705,16 +6706,19 @@ cp_make_fname_decl (id, type_dep) See tree.h for possible values. If LIBNAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. + If ATTRS is nonzero, use that for the function's attribute + list. */ static tree -builtin_function_1 (name, type, context, code, class, libname) +builtin_function_1 (name, type, context, code, class, libname, attrs) const char *name; tree type; tree context; int code; enum built_in_class class; const char *libname; + tree attrs; { tree decl = build_library_fn_1 (get_identifier (name), ERROR_MARK, type); DECL_BUILT_IN_CLASS (decl) = class; @@ -6740,7 +6744,10 @@ builtin_function_1 (name, type, context, code, class, libname) DECL_ANTICIPATED (decl) = 1; /* Possibly apply some default attributes to this built-in function. */ - decl_attributes (&decl, NULL_TREE, 0); + if (attrs) + decl_attributes (&decl, attrs, ATTR_FLAG_BUILT_IN); + else + decl_attributes (&decl, NULL_TREE, 0); return decl; } @@ -6756,26 +6763,31 @@ builtin_function_1 (name, type, context, code, class, libname) See tree.h for possible values. If LIBNAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. + + If ATTRS is nonzero, use that for the function's attribute + list. */ tree -builtin_function (name, type, code, class, libname) +builtin_function (name, type, code, class, libname, attrs) const char *name; tree type; int code; enum built_in_class class; const char *libname; + tree attrs; { /* All builtins that don't begin with an '_' should additionally go in the 'std' namespace. */ if (name[0] != '_') { push_namespace (std_identifier); - builtin_function_1 (name, type, std_node, code, class, libname); + builtin_function_1 (name, type, std_node, code, class, libname, attrs); pop_namespace (); } - return builtin_function_1 (name, type, NULL_TREE, code, class, libname); + return builtin_function_1 (name, type, NULL_TREE, code, + class, libname, attrs); } /* Generate a FUNCTION_DECL with the typical flags for a runtime library diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 4c8f42ca3127..44fe4cc258e0 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2002-07-01 Roger Sayle + + * f/com.c (builtin_function): Accept additional parameter. + (ffe_com_init_0): Pass an additional NULL_TREE argument to + builtin_function. + 2002-06-28 Toon Moene * news.texi: Mention 2 Gbyte limit on 32-bit targets diff --git a/gcc/f/com.c b/gcc/f/com.c index 2fb8caa150e4..45c06c7cefb6 100644 --- a/gcc/f/com.c +++ b/gcc/f/com.c @@ -11667,23 +11667,23 @@ ffecom_init_0 () = build_function_type (void_type_node, NULL_TREE); builtin_function ("__builtin_sqrtf", float_ftype_float, - BUILT_IN_SQRTF, BUILT_IN_NORMAL, "sqrtf"); + BUILT_IN_SQRTF, BUILT_IN_NORMAL, "sqrtf", NULL_TREE); builtin_function ("__builtin_sqrt", double_ftype_double, - BUILT_IN_SQRT, BUILT_IN_NORMAL, "sqrt"); + BUILT_IN_SQRT, BUILT_IN_NORMAL, "sqrt", NULL_TREE); builtin_function ("__builtin_sqrtl", ldouble_ftype_ldouble, - BUILT_IN_SQRTL, BUILT_IN_NORMAL, "sqrtl"); + BUILT_IN_SQRTL, BUILT_IN_NORMAL, "sqrtl", NULL_TREE); builtin_function ("__builtin_sinf", float_ftype_float, - BUILT_IN_SINF, BUILT_IN_NORMAL, "sinf"); + BUILT_IN_SINF, BUILT_IN_NORMAL, "sinf", NULL_TREE); builtin_function ("__builtin_sin", double_ftype_double, - BUILT_IN_SIN, BUILT_IN_NORMAL, "sin"); + BUILT_IN_SIN, BUILT_IN_NORMAL, "sin", NULL_TREE); builtin_function ("__builtin_sinl", ldouble_ftype_ldouble, - BUILT_IN_SINL, BUILT_IN_NORMAL, "sinl"); + BUILT_IN_SINL, BUILT_IN_NORMAL, "sinl", NULL_TREE); builtin_function ("__builtin_cosf", float_ftype_float, - BUILT_IN_COSF, BUILT_IN_NORMAL, "cosf"); + BUILT_IN_COSF, BUILT_IN_NORMAL, "cosf", NULL_TREE); builtin_function ("__builtin_cos", double_ftype_double, - BUILT_IN_COS, BUILT_IN_NORMAL, "cos"); + BUILT_IN_COS, BUILT_IN_NORMAL, "cos", NULL_TREE); builtin_function ("__builtin_cosl", ldouble_ftype_ldouble, - BUILT_IN_COSL, BUILT_IN_NORMAL, "cosl"); + BUILT_IN_COSL, BUILT_IN_NORMAL, "cosl", NULL_TREE); pedantic_lvalues = FALSE; @@ -13072,12 +13072,14 @@ bison_rule_compstmt_ () See tree.h for its possible values. If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. If + ATTRS is nonzero, use that for the function's attribute list. */ tree builtin_function (const char *name, tree type, int function_code, enum built_in_class class, - const char *library_name) + const char *library_name, + tree attrs ATTRIBUTE_UNUSED) { tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); DECL_EXTERNAL (decl) = 1; diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 3bcd3f6c3bf1..755d40fc579b 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2002-07-01 Roger Sayle + + * java/decl.c (builtin_function): Accept additional parameter. + (java_init_decl_processing): Pass an additional NULL_TREE + argument to builtin_function. + 2002-06-29 T.J. Mather * gcj.texi: Fixed gcj invocation example so that it compiles. diff --git a/gcc/java/decl.c b/gcc/java/decl.c index e289001b6462..bf5e5ff5192b 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -358,15 +358,17 @@ push_promoted_type (name, actual_type) See tree.h for its possible values. If LIBRARY_NAME is nonzero, use that for DECL_ASSEMBLER_NAME, - the name to be called if we can't opencode the function. */ + the name to be called if we can't opencode the function. If + ATTRS is nonzero, use that for the function's attribute list. */ tree -builtin_function (name, type, function_code, class, library_name) +builtin_function (name, type, function_code, class, library_name, attrs) const char *name; tree type; int function_code; enum built_in_class class; const char *library_name; + tree attrs ATTRIBUTE_UNUSED; { tree decl = build_decl (FUNCTION_DECL, get_identifier (name), type); DECL_EXTERNAL (decl) = 1; @@ -750,39 +752,41 @@ java_init_decl_processing () tree_cons (NULL_TREE, int_type_node, endlink)); alloc_object_node = builtin_function ("_Jv_AllocObject", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); DECL_IS_MALLOC (alloc_object_node) = 1; alloc_no_finalizer_node = builtin_function ("_Jv_AllocObjectNoFinalizer", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); DECL_IS_MALLOC (alloc_no_finalizer_node) = 1; t = tree_cons (NULL_TREE, ptr_type_node, endlink); soft_initclass_node = builtin_function ("_Jv_InitClass", build_function_type (void_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); throw_node = builtin_function ("_Jv_Throw", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); /* Mark throw_nodes as `noreturn' functions with side effects. */ TREE_THIS_VOLATILE (throw_node) = 1; TREE_SIDE_EFFECTS (throw_node) = 1; t = build_function_type (int_type_node, endlink); soft_monitorenter_node - = builtin_function ("_Jv_MonitorEnter", t, 0, NOT_BUILT_IN, NULL); + = builtin_function ("_Jv_MonitorEnter", t, 0, NOT_BUILT_IN, + NULL, NULL_TREE); soft_monitorexit_node - = builtin_function ("_Jv_MonitorExit", t, 0, NOT_BUILT_IN, NULL); + = builtin_function ("_Jv_MonitorExit", t, 0, NOT_BUILT_IN, + NULL, NULL_TREE); t = tree_cons (NULL_TREE, int_type_node, tree_cons (NULL_TREE, int_type_node, endlink)); soft_newarray_node = builtin_function ("_Jv_NewPrimArray", build_function_type(ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); DECL_IS_MALLOC (soft_newarray_node) = 1; t = tree_cons (NULL_TREE, int_type_node, @@ -791,7 +795,7 @@ java_init_decl_processing () soft_anewarray_node = builtin_function ("_Jv_NewObjectArray", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); DECL_IS_MALLOC (soft_anewarray_node) = 1; t = tree_cons (NULL_TREE, ptr_type_node, @@ -799,14 +803,14 @@ java_init_decl_processing () soft_multianewarray_node = builtin_function ("_Jv_NewMultiArray", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); DECL_IS_MALLOC (soft_multianewarray_node) = 1; t = build_function_type (void_type_node, tree_cons (NULL_TREE, int_type_node, endlink)); soft_badarrayindex_node = builtin_function ("_Jv_ThrowBadArrayIndex", t, - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); /* Mark soft_badarrayindex_node as a `noreturn' function with side effects. */ TREE_THIS_VOLATILE (soft_badarrayindex_node) = 1; @@ -815,7 +819,7 @@ java_init_decl_processing () soft_nullpointer_node = builtin_function ("_Jv_ThrowNullPointerException", build_function_type (void_type_node, endlink), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); /* Mark soft_nullpointer_node as a `noreturn' function with side effects. */ TREE_THIS_VOLATILE (soft_nullpointer_node) = 1; @@ -826,26 +830,26 @@ java_init_decl_processing () soft_checkcast_node = builtin_function ("_Jv_CheckCast", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, object_ptr_type_node, tree_cons (NULL_TREE, class_ptr_type, endlink)); soft_instanceof_node = builtin_function ("_Jv_IsInstanceOf", build_function_type (boolean_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, object_ptr_type_node, tree_cons (NULL_TREE, object_ptr_type_node, endlink)); soft_checkarraystore_node = builtin_function ("_Jv_CheckArrayStore", build_function_type (void_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, int_type_node, endlink))); soft_lookupinterfacemethod_node = builtin_function ("_Jv_LookupInterfaceMethodIdx", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, object_ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, @@ -853,23 +857,23 @@ java_init_decl_processing () soft_lookupjnimethod_node = builtin_function ("_Jv_LookupJNIMethod", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, ptr_type_node, endlink); soft_getjnienvnewframe_node = builtin_function ("_Jv_GetJNIEnvNewFrame", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); soft_jnipopsystemframe_node = builtin_function ("_Jv_JNI_PopSystemFrame", build_function_type (ptr_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); t = tree_cons (NULL_TREE, double_type_node, tree_cons (NULL_TREE, double_type_node, endlink)); soft_fmod_node = builtin_function ("__builtin_fmod", build_function_type (double_type_node, t), - BUILT_IN_FMOD, BUILT_IN_NORMAL, "fmod"); + BUILT_IN_FMOD, BUILT_IN_NORMAL, "fmod", NULL_TREE); #if 0 t = tree_cons (NULL_TREE, float_type_node, @@ -877,28 +881,28 @@ java_init_decl_processing () soft_fmodf_node = builtin_function ("__builtin_fmodf", build_function_type (float_type_node, t), - BUILT_IN_FMOD, BUILT_IN_NORMAL, "fmodf"); + BUILT_IN_FMOD, BUILT_IN_NORMAL, "fmodf", NULL_TREE); #endif soft_idiv_node = builtin_function ("_Jv_divI", build_function_type (int_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); soft_irem_node = builtin_function ("_Jv_remI", build_function_type (int_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); soft_ldiv_node = builtin_function ("_Jv_divJ", build_function_type (long_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); soft_lrem_node = builtin_function ("_Jv_remJ", build_function_type (long_type_node, t), - 0, NOT_BUILT_IN, NULL); + 0, NOT_BUILT_IN, NULL, NULL_TREE); /* Initialize variables for except.c. */ eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 73e30d71881c..3909e0ca16f8 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -1093,7 +1093,8 @@ synth_module_prologue () pushdecl (umsg_decl); } else - umsg_decl = builtin_function (TAG_MSGSEND, temp_type, 0, NOT_BUILT_IN, 0); + umsg_decl = builtin_function (TAG_MSGSEND, temp_type, 0, NOT_BUILT_IN, + NULL, NULL_TREE); /* id objc_msgSendSuper (struct objc_super *, SEL, ...); */ @@ -1104,7 +1105,8 @@ synth_module_prologue () NULL_TREE))); umsg_super_decl = builtin_function (TAG_MSGSENDSUPER, - temp_type, 0, NOT_BUILT_IN, 0); + temp_type, 0, NOT_BUILT_IN, + NULL, NULL_TREE); /* id objc_getClass (const char *); */ @@ -1115,12 +1117,14 @@ synth_module_prologue () NULL_TREE))); objc_get_class_decl - = builtin_function (TAG_GETCLASS, temp_type, 0, NOT_BUILT_IN, 0); + = builtin_function (TAG_GETCLASS, temp_type, 0, NOT_BUILT_IN, + NULL, NULL_TREE); /* id objc_getMetaClass (const char *); */ objc_get_meta_class_decl - = builtin_function (TAG_GETMETACLASS, temp_type, 0, NOT_BUILT_IN, 0); + = builtin_function (TAG_GETMETACLASS, temp_type, 0, NOT_BUILT_IN, + NULL, NULL_TREE); /* static SEL _OBJC_SELECTOR_TABLE[]; */ diff --git a/gcc/tree.h b/gcc/tree.h index 4fcbdd0a19aa..75c8e6036e71 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2724,9 +2724,9 @@ extern int all_types_permanent; /* Declare a predefined function. Return the declaration. This function is provided by each language frontend. */ -extern tree builtin_function PARAMS ((const char *, tree, int, - enum built_in_class, - const char *)); +extern tree builtin_function PARAMS ((const char *, tree, int, + enum built_in_class, + const char *, tree)); /* In tree.c */ extern char *perm_calloc PARAMS ((int, long));