OSDN Git Service

PR middle-end/43730
authormatz <matz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Apr 2010 13:35:30 +0000 (13:35 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:59:13 +0000 (09:59 +0900)
* builtins.c (expand_builtin_interclass_mathfn): Also create
a register if the predicate doesn't match.

testsuite/
* gcc.dg/pr43730.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158268 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog

index d28e6a3..ff7b057 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-13  Michael Matz  <matz@suse.de>
+
+       PR middle-end/43730
+       * builtins.c (expand_builtin_interclass_mathfn): Also create
+       a register if the predicate doesn't match.
+
 2010-04-13  Diego Novillo  <dnovillo@google.com>
 
        * Makefile.in (c-pch.o, ggc-common.o): Depend on timevar.h.
index 65a1dbd..c1acd5d 100644 (file)
@@ -2316,7 +2316,8 @@ expand_builtin_interclass_mathfn (tree exp, rtx target, rtx subtarget)
       tree orig_arg = arg;
       /* Make a suitable register to place result in.  */
       if (!target
-         || GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp)))
+         || GET_MODE (target) != TYPE_MODE (TREE_TYPE (exp))
+         || !insn_data[icode].operand[0].predicate (target, GET_MODE (target)))
          target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
 
       gcc_assert (insn_data[icode].operand[0].predicate
index 2c370c0..5d187a1 100644 (file)
@@ -1,5 +1,10 @@
 2010-04-13  Michael Matz  <matz@suse.de>
 
+       PR middle-end/43730
+       * gcc.dg/pr43730.c: New test.
+
+2010-04-13  Michael Matz  <matz@suse.de>
+
        * gcc.dg/tree-ssa/negate.c: New testcase.
 
 2010-04-13  Richard Guenther  <rguenther@suse.de>