Commit c09a3914 by Richard Biener Committed by Richard Biener

re PR middle-end/65519 (unable to coalesce ssa_names 2 and 87 which are marked as MUST COALESCE)

2015-03-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/65519
	* genmatch.c (expr::gen_transform): Re-write to avoid
	using gimple_build.

	* gnat.dg/specs/opt2.ads: New testcase.

From-SVN: r221654
parent 0341335e
2015-03-25 Richard Biener <rguenther@suse.de>
PR middle-end/65519
* genmatch.c (expr::gen_transform): Re-write to avoid
using gimple_build.
2015-03-25 Bin Cheng <bin.cheng@arm.com>
* doc/sourcebuild.texi (arm_tune_string_ops_prefer_neon): New.
......
......@@ -1742,22 +1742,18 @@ expr::gen_transform (FILE *f, const char *dest, bool gimple, int depth,
if (gimple)
{
/* ??? Have another helper that is like gimple_build but may
fail if seq == NULL. */
fprintf (f, " if (!seq)\n"
" {\n"
" res = gimple_simplify (%s, %s", opr, type);
/* ??? Building a stmt can fail for various reasons here, seq being
NULL or the stmt referencing SSA names occuring in abnormal PHIs.
So if we fail here we should continue matching other patterns. */
fprintf (f, " code_helper tem_code = %s;\n"
" tree tem_ops[3] = { ", opr);
for (unsigned i = 0; i < ops.length (); ++i)
fprintf (f, ", ops%d[%u]", depth, i);
fprintf (f, ", seq, valueize);\n");
fprintf (f, " if (!res) return false;\n");
fprintf (f, " }\n");
fprintf (f, " else\n");
fprintf (f, " res = gimple_build (seq, UNKNOWN_LOCATION, %s, %s",
opr, type);
for (unsigned i = 0; i < ops.length (); ++i)
fprintf (f, ", ops%d[%u]", depth, i);
fprintf (f, ", valueize);\n");
fprintf (f, "ops%d[%u]%s", depth, i,
i == ops.length () - 1 ? " };\n" : ", ");
fprintf (f, " gimple_resimplify%d (seq, &tem_code, %s, tem_ops, valueize);\n",
ops.length (), type);
fprintf (f, " res = maybe_push_res_to_seq (tem_code, %s, tem_ops, seq);\n"
" if (!res) return false;\n", type);
}
else
{
......@@ -1771,7 +1767,7 @@ expr::gen_transform (FILE *f, const char *dest, bool gimple, int depth,
fprintf (f, ", ops%d[%u]", depth, i);
fprintf (f, ");\n");
}
fprintf (f, " %s = res;\n", dest);
fprintf (f, "%s = res;\n", dest);
fprintf (f, "}\n");
}
......
2015-03-25 Richard Biener <rguenther@suse.de>
PR middle-end/65519
* gnat.dg/specs/opt2.ads: New testcase.
2015-03-25 Bin Cheng <bin.cheng@arm.com>
* lib/target-supports.exp (arm_tune_string_ops_prefer_neon): New.
......
-- { dg-do compile }
-- { dg-options "-O2" }
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Interfaces; use Interfaces;
package Opt2 is
type Arr is array (Unsigned_32 range <>) of Unbounded_String;
end P;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment