------- Comment #3 from rguenth at gcc dot gnu dot org  2010-04-13 09:02 -------
Micha - compared to 4.4 we arrive with

(gdb) call debug_rtx (target)
(mem/c/i:SI (plus:DI (reg/f:DI 54 virtual-stack-vars)
        (const_int -4 [0xfffffffffffffffc])) [0 result+0 S4 A32])

instead of

(gdb) call debug_rtx (target)
(reg:SI 59 [ D.1598 ])

which isn't valid for

(define_expand "isinfxf2"
  [(use (match_operand:SI 0 "register_operand" ""))
   (use (match_operand:XF 1 "register_operand" ""))]
  "TARGET_USE_FANCY_MATH_387
   && TARGET_C99_FUNCTIONS"

but we assert that it is.  Do we never expect a MEM for target or why were
we lucky before?

I can obviously "fix" this by

Index: builtins.c
===================================================================
--- builtins.c  (revision 158225)
+++ builtins.c  (working copy)
@@ -2316,6 +2316,7 @@ expand_builtin_interclass_mathfn (tree e
       tree orig_arg = arg;
       /* Make a suitable register to place result in.  */
       if (!target
+         || !REG_P (target)
          || GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp)))
          target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |matz at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43730

Reply via email to