Commit 6e0fbdd9 by Jan Hubicka Committed by Jan Hubicka

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
parent 0e6d033b
2005-06-25 Jan Hubicka <jh@suse.cz>
* builtins.c (define_builtin): Accept new flags parameter.
(initialize_builtins): Mark the builtins const and nothrow accordingly.
2005-06-25 Kelley Cook <kcook@gcc.gnu.org> 2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
* all files: Update FSF address in copyright headers. * all files: Update FSF address in copyright headers.
......
...@@ -41,8 +41,6 @@ static tree min_builtin (tree, tree); ...@@ -41,8 +41,6 @@ static tree min_builtin (tree, tree);
static tree abs_builtin (tree, tree); static tree abs_builtin (tree, tree);
static tree java_build_function_call_expr (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) ...@@ -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. */ /* Define a single builtin. */
static void static void
define_builtin (enum built_in_function val, define_builtin (enum built_in_function val,
const char *name, const char *name,
tree type, tree type,
const char *libname) const char *libname,
int flags)
{ {
tree decl; tree decl;
...@@ -147,6 +148,10 @@ define_builtin (enum built_in_function val, ...@@ -147,6 +148,10 @@ define_builtin (enum built_in_function val,
pushdecl (decl); pushdecl (decl);
DECL_BUILT_IN_CLASS (decl) = BUILT_IN_NORMAL; DECL_BUILT_IN_CLASS (decl) = BUILT_IN_NORMAL;
DECL_FUNCTION_CODE (decl) = val; 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; implicit_built_in_decls[val] = decl;
built_in_decls[val] = decl; built_in_decls[val] = decl;
...@@ -186,43 +191,57 @@ initialize_builtins (void) ...@@ -186,43 +191,57 @@ initialize_builtins (void)
double_ftype_double_double = build_function_type (double_type_node, t); double_ftype_double_double = build_function_type (double_type_node, t);
define_builtin (BUILT_IN_FMOD, "__builtin_fmod", 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", 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", define_builtin (BUILT_IN_ACOS, "__builtin_acos",
double_ftype_double, "_ZN4java4lang4Math4acosEd"); double_ftype_double, "_ZN4java4lang4Math4acosEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_ASIN, "__builtin_asin", define_builtin (BUILT_IN_ASIN, "__builtin_asin",
double_ftype_double, "_ZN4java4lang4Math4asinEd"); double_ftype_double, "_ZN4java4lang4Math4asinEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_ATAN, "__builtin_atan", define_builtin (BUILT_IN_ATAN, "__builtin_atan",
double_ftype_double, "_ZN4java4lang4Math4atanEd"); double_ftype_double, "_ZN4java4lang4Math4atanEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_ATAN2, "__builtin_atan2", 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", define_builtin (BUILT_IN_CEIL, "__builtin_ceil",
double_ftype_double, "_ZN4java4lang4Math4ceilEd"); double_ftype_double, "_ZN4java4lang4Math4ceilEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_COS, "__builtin_cos", define_builtin (BUILT_IN_COS, "__builtin_cos",
double_ftype_double, "_ZN4java4lang4Math3cosEd"); double_ftype_double, "_ZN4java4lang4Math3cosEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_EXP, "__builtin_exp", define_builtin (BUILT_IN_EXP, "__builtin_exp",
double_ftype_double, "_ZN4java4lang4Math3expEd"); double_ftype_double, "_ZN4java4lang4Math3expEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_FLOOR, "__builtin_floor", define_builtin (BUILT_IN_FLOOR, "__builtin_floor",
double_ftype_double, "_ZN4java4lang4Math5floorEd"); double_ftype_double, "_ZN4java4lang4Math5floorEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_LOG, "__builtin_log", define_builtin (BUILT_IN_LOG, "__builtin_log",
double_ftype_double, "_ZN4java4lang4Math3logEd"); double_ftype_double, "_ZN4java4lang4Math3logEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_POW, "__builtin_pow", 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", define_builtin (BUILT_IN_SIN, "__builtin_sin",
double_ftype_double, "_ZN4java4lang4Math3sinEd"); double_ftype_double, "_ZN4java4lang4Math3sinEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_SQRT, "__builtin_sqrt", define_builtin (BUILT_IN_SQRT, "__builtin_sqrt",
double_ftype_double, "_ZN4java4lang4Math4sqrtEd"); double_ftype_double, "_ZN4java4lang4Math4sqrtEd",
BUILTIN_CONST);
define_builtin (BUILT_IN_TAN, "__builtin_tan", 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, end_params_node);
t = tree_cons (NULL_TREE, boolean_type_node, t); t = tree_cons (NULL_TREE, boolean_type_node, t);
boolean_ftype_boolean_boolean = build_function_type (boolean_type_node, t); boolean_ftype_boolean_boolean = build_function_type (boolean_type_node, t);
define_builtin (BUILT_IN_EXPECT, "__builtin_expect", define_builtin (BUILT_IN_EXPECT, "__builtin_expect",
boolean_ftype_boolean_boolean, boolean_ftype_boolean_boolean,
"__builtin_expect"); "__builtin_expect",
BUILTIN_CONST | BUILTIN_NOTHROW);
build_common_builtin_nodes (); build_common_builtin_nodes ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment