diff options
author | Jan Hubicka <jh@suse.cz> | 2005-06-25 13:22:50 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-06-25 11:22:50 +0000 |
commit | 6e0fbdd9783baa384518e291f92756b36ff76a34 (patch) | |
tree | 5b342106eb78ab2a9cf10127af3acf0527e396ef /gcc/java/builtins.c | |
parent | 0e6d033bc892f6f79683dcbbda0e6a1987685bf4 (diff) | |
download | gcc-6e0fbdd9783baa384518e291f92756b36ff76a34.zip gcc-6e0fbdd9783baa384518e291f92756b36ff76a34.tar.gz gcc-6e0fbdd9783baa384518e291f92756b36ff76a34.tar.bz2 |
builtins.c (define_builtin): Accept new flags parameter.
* builtins.c (define_builtin): Accept new flags parameter.
(initialize_builtins): Mark the builtins const and nothrow accordingly.
From-SVN: r101319
Diffstat (limited to 'gcc/java/builtins.c')
-rw-r--r-- | gcc/java/builtins.c | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c index 09aa5bd..68f0b95 100644 --- a/gcc/java/builtins.c +++ b/gcc/java/builtins.c @@ -41,8 +41,6 @@ static tree min_builtin (tree, tree); static tree abs_builtin (tree, tree); static tree java_build_function_call_expr (tree, tree); -static void define_builtin (enum built_in_function, const char *, - tree, const char *); @@ -131,12 +129,15 @@ java_build_function_call_expr (tree fn, tree arglist) +#define BUILTIN_NOTHROW 1 +#define BUILTIN_CONST 2 /* Define a single builtin. */ static void define_builtin (enum built_in_function val, const char *name, tree type, - const char *libname) + const char *libname, + int flags) { tree decl; @@ -147,6 +148,10 @@ define_builtin (enum built_in_function val, pushdecl (decl); DECL_BUILT_IN_CLASS (decl) = BUILT_IN_NORMAL; DECL_FUNCTION_CODE (decl) = val; + if (flags & BUILTIN_NOTHROW) + TREE_NOTHROW (decl) = 1; + if (flags & BUILTIN_CONST) + TREE_READONLY (decl) = 1; implicit_built_in_decls[val] = decl; built_in_decls[val] = decl; @@ -186,43 +191,57 @@ initialize_builtins (void) double_ftype_double_double = build_function_type (double_type_node, t); define_builtin (BUILT_IN_FMOD, "__builtin_fmod", - double_ftype_double_double, "fmod"); + double_ftype_double_double, "fmod", BUILTIN_CONST); define_builtin (BUILT_IN_FMODF, "__builtin_fmodf", - float_ftype_float_float, "fmodf"); + float_ftype_float_float, "fmodf", BUILTIN_CONST); define_builtin (BUILT_IN_ACOS, "__builtin_acos", - double_ftype_double, "_ZN4java4lang4Math4acosEd"); + double_ftype_double, "_ZN4java4lang4Math4acosEd", + BUILTIN_CONST); define_builtin (BUILT_IN_ASIN, "__builtin_asin", - double_ftype_double, "_ZN4java4lang4Math4asinEd"); + double_ftype_double, "_ZN4java4lang4Math4asinEd", + BUILTIN_CONST); define_builtin (BUILT_IN_ATAN, "__builtin_atan", - double_ftype_double, "_ZN4java4lang4Math4atanEd"); + double_ftype_double, "_ZN4java4lang4Math4atanEd", + BUILTIN_CONST); define_builtin (BUILT_IN_ATAN2, "__builtin_atan2", - double_ftype_double_double, "_ZN4java4lang4Math5atan2Edd"); + double_ftype_double_double, "_ZN4java4lang4Math5atan2Edd", + BUILTIN_CONST); define_builtin (BUILT_IN_CEIL, "__builtin_ceil", - double_ftype_double, "_ZN4java4lang4Math4ceilEd"); + double_ftype_double, "_ZN4java4lang4Math4ceilEd", + BUILTIN_CONST); define_builtin (BUILT_IN_COS, "__builtin_cos", - double_ftype_double, "_ZN4java4lang4Math3cosEd"); + double_ftype_double, "_ZN4java4lang4Math3cosEd", + BUILTIN_CONST); define_builtin (BUILT_IN_EXP, "__builtin_exp", - double_ftype_double, "_ZN4java4lang4Math3expEd"); + double_ftype_double, "_ZN4java4lang4Math3expEd", + BUILTIN_CONST); define_builtin (BUILT_IN_FLOOR, "__builtin_floor", - double_ftype_double, "_ZN4java4lang4Math5floorEd"); + double_ftype_double, "_ZN4java4lang4Math5floorEd", + BUILTIN_CONST); define_builtin (BUILT_IN_LOG, "__builtin_log", - double_ftype_double, "_ZN4java4lang4Math3logEd"); + double_ftype_double, "_ZN4java4lang4Math3logEd", + BUILTIN_CONST); define_builtin (BUILT_IN_POW, "__builtin_pow", - double_ftype_double_double, "_ZN4java4lang4Math3powEdd"); + double_ftype_double_double, "_ZN4java4lang4Math3powEdd", + BUILTIN_CONST); define_builtin (BUILT_IN_SIN, "__builtin_sin", - double_ftype_double, "_ZN4java4lang4Math3sinEd"); + double_ftype_double, "_ZN4java4lang4Math3sinEd", + BUILTIN_CONST); define_builtin (BUILT_IN_SQRT, "__builtin_sqrt", - double_ftype_double, "_ZN4java4lang4Math4sqrtEd"); + double_ftype_double, "_ZN4java4lang4Math4sqrtEd", + BUILTIN_CONST); define_builtin (BUILT_IN_TAN, "__builtin_tan", - double_ftype_double, "_ZN4java4lang4Math3tanEd"); + double_ftype_double, "_ZN4java4lang4Math3tanEd", + BUILTIN_CONST); t = tree_cons (NULL_TREE, boolean_type_node, end_params_node); t = tree_cons (NULL_TREE, boolean_type_node, t); boolean_ftype_boolean_boolean = build_function_type (boolean_type_node, t); define_builtin (BUILT_IN_EXPECT, "__builtin_expect", boolean_ftype_boolean_boolean, - "__builtin_expect"); + "__builtin_expect", + BUILTIN_CONST | BUILTIN_NOTHROW); build_common_builtin_nodes (); } |