------- Comment #9 from hjl at lucon dot org 2007-08-07 17:03 -------
Does this patch:
--- builtins.c.round 2007-07-29 13:18:40.000000000 -0700
+++ builtins.c 2007-08-07 09:58:46.000000000 -0700
@@ -2689,6 +2689,16 @@ expand_builtin_int_roundingfn_2 (tree ex
start_sequence ();
+ if (TREE_CODE (exp) == NOP_EXPR)
+ switch (TREE_CODE (TREE_OPERAND (exp, 0)))
+ {
+ case FIX_TRUNC_EXPR:
+ builtin_optab = sfixtrunc_optab;
+ break;
+ default:
+ gcc_unreachable ();
+ }
+
if (expand_sfix_optab (target, op0, builtin_optab))
{
/* Output the entire sequence. */
@@ -2698,6 +2708,8 @@ expand_builtin_int_roundingfn_2 (tree ex
return target;
}
+ gcc_assert (TREE_CODE (exp) == CALL_EXPR);
+
/* If we were unable to expand via the builtin, stop the sequence
(without outputting the insns) and call to the library function
with the stabilized argument list. */
make any senses?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33007