builtins.c (expand_builtin_mathfn_2, [...]): Do not expand errno setting variant...
authorJan Hubicka <jh@suse.cz>
Wed, 17 Nov 2010 21:11:24 +0000 (22:11 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 17 Nov 2010 21:11:24 +0000 (21:11 +0000)
* builtins.c (expand_builtin_mathfn_2, expand_builtin_mathfn): Do not
expand errno setting variant when optimizing for size.

From-SVN: r166879

gcc/ChangeLog
gcc/builtins.c

index 005e26a..d21e2e9 100644 (file)
@@ -1,3 +1,8 @@
+2010-11-17  Jan Hubicka  <jh@suse.cz>
+
+       * builtins.c (expand_builtin_mathfn_2, expand_builtin_mathfn): Do not
+       expand errno setting variant when optimizing for size.
+
 2010-11-17  Eric Botcazou  <ebotcazou@adacore.com>
 
        * postreload.c (reload_combine): Call control_flow_insn_p only once.
index 4eb7047..5f2959c 100644 (file)
@@ -2039,7 +2039,8 @@ expand_builtin_mathfn (tree exp, rtx target, rtx subtarget)
     errno_set = false;
 
   /* Before working hard, check whether the instruction is available.  */
-  if (optab_handler (builtin_optab, mode) != CODE_FOR_nothing)
+  if (optab_handler (builtin_optab, mode) != CODE_FOR_nothing
+      && (!errno_set || !optimize_insn_for_size_p ()))
     {
       target = gen_reg_rtx (mode);
 
@@ -2149,6 +2150,9 @@ expand_builtin_mathfn_2 (tree exp, rtx target, rtx subtarget)
   if (! flag_errno_math || ! HONOR_NANS (mode))
     errno_set = false;
 
+  if (errno_set && optimize_insn_for_size_p ())
+    return 0;
+
   /* Always stabilize the argument list.  */
   CALL_EXPR_ARG (exp, 0) = arg0 = builtin_save_expr (arg0);
   CALL_EXPR_ARG (exp, 1) = arg1 = builtin_save_expr (arg1);