------- 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