diff options
author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-07-01 23:07:19 +0000 |
---|---|---|
committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-07-01 23:07:19 +0000 |
commit | a06abcfb66e8ecfa158cbf5888d5672a630f5cf1 (patch) | |
tree | 07ad9c28c137e09be00ed739a192154beed604d3 | |
parent | 59303ed067fd62c92d42bd32bb91f9e2b0604fdb (diff) | |
download | gcc-a06abcfb66e8ecfa158cbf5888d5672a630f5cf1.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55161 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 29 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/utils.c | 8 | ||||
-rw-r--r-- | gcc/c-common.c | 8 | ||||
-rw-r--r-- | gcc/c-decl.c | 11 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 15 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 2 | ||||
-rw-r--r-- | gcc/config/c4x/c4x.c | 12 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 9 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 9 | ||||
-rw-r--r-- | gcc/cp/call.c | 2 | ||||
-rw-r--r-- | gcc/cp/decl.c | 28 | ||||
-rw-r--r-- | gcc/f/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/f/com.c | 24 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/java/decl.c | 56 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 12 | ||||
-rw-r--r-- | gcc/tree.h | 6 |
19 files changed, 167 insertions, 82 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a4291b8851..811e9c90ca8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,32 @@ +2002-07-01 Roger Sayle <roger@eyesopen.com> + + * 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 <zack@codesourcery.com> * config/ip2k/t-ip2k: Remove LIBGCC1, CROSS_LIBGCC1, and LIBGCC1_TEST. diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9c4c2774113..368a9e1e17c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2002-07-01 Roger Sayle <roger@eyesopen.com> + + * ada/utils.c (builtin_function): Accept an additional parameter. + 2002-06-28 Andreas Jaeger <aj@suse.de> PR ada/7144 diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c index d820401f20f..33980a5f667 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 c71f7527006..4438abe2a09 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 23134e385b7..a32b7835ca1 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 b109328d34a..9e240058e24 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 04212dbc2b2..17d77507f60 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 ad2ff6dff3e..1e8814cb584 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 46081ba95dc..faf723c4921 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 4f7380af976..be83a4d26c8 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 20cb29942ed..6fcf8909f72 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 e6f31510d77..141c7ac2537 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 e2263fc6707..5d4f78ea6c3 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 4c8f42ca312..44fe4cc258e 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2002-07-01 Roger Sayle <roger@eyesopen.com> + + * 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 <toon@moene.indiv.nluug.nl> * news.texi: Mention 2 Gbyte limit on 32-bit targets diff --git a/gcc/f/com.c b/gcc/f/com.c index 2fb8caa150e..45c06c7cefb 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 3bcd3f6c3bf..755d40fc579 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2002-07-01 Roger Sayle <roger@eyesopen.com> + + * 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 <tjmather@maxmind.com> * gcj.texi: Fixed gcj invocation example so that it compiles. diff --git a/gcc/java/decl.c b/gcc/java/decl.c index e289001b646..bf5e5ff5192 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 73e30d71881..3909e0ca16f 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 4fcbdd0a19a..75c8e6036e7 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)); |