re PR tree-optimization/67306 (Patterns ICEs when moved using "simplify and match")
2015-08-25 Richard Biener <rguenther@suse.de> PR middle-end/67306 * genmatch.c (expr::gen_transform): Verify the result of builtin_decl_implicit. (dt_simplify::gen_1): Likewise. From-SVN: r227163
This commit is contained in:
parent
e36dbdfe55
commit
e4cdf6a8c5
|
@ -1,3 +1,10 @@
|
||||||
|
2015-08-25 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR middle-end/67306
|
||||||
|
* genmatch.c (expr::gen_transform): Verify the result of
|
||||||
|
builtin_decl_implicit.
|
||||||
|
(dt_simplify::gen_1): Likewise.
|
||||||
|
|
||||||
2015-08-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
2015-08-25 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||||
|
|
||||||
* config/arm/constraints.md: Also list Cs and US ARM-specific
|
* config/arm/constraints.md: Also list Cs and US ARM-specific
|
||||||
|
|
|
@ -2177,11 +2177,19 @@ expr::gen_transform (FILE *f, int indent, const char *dest, bool gimple,
|
||||||
fprintf_indent (f, indent, "res = fold_build%d_loc (loc, %s, %s",
|
fprintf_indent (f, indent, "res = fold_build%d_loc (loc, %s, %s",
|
||||||
ops.length(), opr_name, type);
|
ops.length(), opr_name, type);
|
||||||
else
|
else
|
||||||
fprintf_indent (f, indent, "res = build_call_expr_loc (loc, "
|
{
|
||||||
"builtin_decl_implicit (%s), %d", opr_name, ops.length());
|
fprintf_indent (f, indent, "{\n");
|
||||||
|
fprintf_indent (f, indent, " tree decl = builtin_decl_implicit (%s);\n",
|
||||||
|
opr_name);
|
||||||
|
fprintf_indent (f, indent, " if (!decl) return NULL_TREE;\n");
|
||||||
|
fprintf_indent (f, indent, " res = build_call_expr_loc (loc, "
|
||||||
|
"decl, %d", ops.length());
|
||||||
|
}
|
||||||
for (unsigned i = 0; i < ops.length (); ++i)
|
for (unsigned i = 0; i < ops.length (); ++i)
|
||||||
fprintf (f, ", ops%d[%u]", depth, i);
|
fprintf (f, ", ops%d[%u]", depth, i);
|
||||||
fprintf (f, ");\n");
|
fprintf (f, ");\n");
|
||||||
|
if (opr->kind != id_base::CODE)
|
||||||
|
fprintf_indent (f, indent, "}\n");
|
||||||
if (*opr == CONVERT_EXPR)
|
if (*opr == CONVERT_EXPR)
|
||||||
{
|
{
|
||||||
indent -= 2;
|
indent -= 2;
|
||||||
|
@ -3069,13 +3077,24 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, operand *result)
|
||||||
*e->operation == CONVERT_EXPR
|
*e->operation == CONVERT_EXPR
|
||||||
? "NOP_EXPR" : e->operation->id);
|
? "NOP_EXPR" : e->operation->id);
|
||||||
else
|
else
|
||||||
fprintf_indent (f, indent,
|
{
|
||||||
"res = build_call_expr_loc "
|
fprintf_indent (f, indent,
|
||||||
"(loc, builtin_decl_implicit (%s), %d",
|
"{\n");
|
||||||
e->operation->id, e->ops.length());
|
fprintf_indent (f, indent,
|
||||||
|
" tree decl = builtin_decl_implicit (%s);\n",
|
||||||
|
e->operation->id);
|
||||||
|
fprintf_indent (f, indent,
|
||||||
|
" if (!decl) return NULL_TREE;\n");
|
||||||
|
fprintf_indent (f, indent,
|
||||||
|
" res = build_call_expr_loc "
|
||||||
|
"(loc, decl, %d",
|
||||||
|
e->ops.length());
|
||||||
|
}
|
||||||
for (unsigned j = 0; j < e->ops.length (); ++j)
|
for (unsigned j = 0; j < e->ops.length (); ++j)
|
||||||
fprintf (f, ", res_op%d", j);
|
fprintf (f, ", res_op%d", j);
|
||||||
fprintf (f, ");\n");
|
fprintf (f, ");\n");
|
||||||
|
if (!is_a <operator_id *> (opr))
|
||||||
|
fprintf_indent (f, indent, "}\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue