+2015-12-02 Richard Biener <rguenther@suse.de>
+
+ * tree.h (tree_invariant_p): Declare.
+ * tree.c (tree_invariant_p): Export.
+ * genmatch.c (dt_simplify::gen_1): For GENERIC code-gen never
+ create SAVE_EXPRs but reject patterns if we would need to.
+
2015-12-02 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (find_func_aliases_for_builtin_call)
if (cinfo.info[i].result_use_count
> cinfo.info[i].match_use_count)
fprintf_indent (f, indent,
- "captures[%d] = save_expr (captures[%d]);\n",
- i, i);
+ "if (! tree_invariant_p (captures[%d])) "
+ "return NULL_TREE;\n", i);
}
for (unsigned j = 0; j < e->ops.length (); ++j)
{
not handle arithmetic; that's handled in skip_simple_arithmetic and
tree_invariant_p). */
-static bool tree_invariant_p (tree t);
-
static bool
tree_invariant_p_1 (tree t)
{
/* Return true if T is function-invariant. */
-static bool
+bool
tree_invariant_p (tree t)
{
tree inner = skip_simple_arithmetic (t);
extern tree save_expr (tree);
+/* Return true if T is function-invariant. */
+
+extern bool tree_invariant_p (tree);
+
/* Look inside EXPR into any simple arithmetic operations. Return the
outermost non-arithmetic or non-invariant node. */