* tree-ssa-pre.c (find_or_generate_expression): CALL_EXPR
is okay too.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99882
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-05-17 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (find_or_generate_expression): CALL_EXPR
+ is okay too.
+
2005-05-17 Zdenek Dvorak <dvorakz@suse.cz>
* timevar.def (TV_SCEV_CONST): New timevar.
--- /dev/null
+/* Tree PRE is going to transform this so that it doesn't call cos on the
+ d = 0 path, and in doing so, it needs to regenerate the cos call.
+ This was ICE'ing due to an overly strict check on what it knew how
+ to regenerate. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ffast-math" } */
+double cos(double);
+double f(double d, double i, int j) { if (j == 1) d = 0; return d * cos(i); }
gcc_assert (UNARY_CLASS_P (genop)
|| BINARY_CLASS_P (genop)
|| COMPARISON_CLASS_P (genop)
- || REFERENCE_CLASS_P (genop));
+ || REFERENCE_CLASS_P (genop)
+ || TREE_CODE (genop) == CALL_EXPR);
genop = create_expression_by_pieces (block, genop, stmts);
}
return genop;