From 1bbddf1116691381ec23f6a5c4908648784e868d Mon Sep 17 00:00:00 2001 From: James Van Artsdalen Date: Fri, 28 Aug 1992 01:49:35 +0000 Subject: [PATCH] (expand_builtin): Add sin and cos as built-in functions.c From-SVN: r1983 --- gcc/expr.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 55bbd80ec7c..17a8fb6ed68 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -5057,6 +5057,7 @@ expand_builtin (exp, target, subtarget, mode, ignore) rtx op0; rtx lab1, insns; enum machine_mode value_mode = TYPE_MODE (TREE_TYPE (exp)); + optab builtin_optab; switch (DECL_FUNCTION_CODE (fndecl)) { @@ -5066,6 +5067,8 @@ expand_builtin (exp, target, subtarget, mode, ignore) /* build_function_call changes these into ABS_EXPR. */ abort (); + case BUILT_IN_SIN: + case BUILT_IN_COS: case BUILT_IN_FSQRT: /* If not optimizing, call the library function. */ if (! optimize) @@ -5093,10 +5096,22 @@ expand_builtin (exp, target, subtarget, mode, ignore) emit_queue (); start_sequence (); - /* Compute sqrt into TARGET. + switch (DECL_FUNCTION_CODE (fndecl)) + { + case BUILT_IN_SIN: + builtin_optab = sin_optab; break; + case BUILT_IN_COS: + builtin_optab = cos_optab; break; + case BUILT_IN_FSQRT: + builtin_optab = sqrt_optab; break; + default: + abort (); + } + + /* Compute into TARGET. Set TARGET to wherever the result comes back. */ target = expand_unop (TYPE_MODE (TREE_TYPE (TREE_VALUE (arglist))), - sqrt_optab, op0, target, 0); + builtin_optab, op0, target, 0); /* If we were unable to expand via the builtin, stop the sequence (without outputting the insns) and break, causing @@ -5112,7 +5127,7 @@ expand_builtin (exp, target, subtarget, mode, ignore) if (! flag_fast_math) { - /* Don't define the sqrt instructions + /* Don't define the builtin FP instructions if your machine is not IEEE. */ if (TARGET_FLOAT_FORMAT != IEEE_FLOAT_FORMAT) abort (); -- 2.30.2