diff options
author | Richard Biener <rguenther@suse.de> | 2014-10-31 13:43:53 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-10-31 13:43:53 +0000 |
commit | 32dfd2e0335282119b8f03e3e05676bdbf6fca84 (patch) | |
tree | 626915d867ae82c707353edfaf6d57ffffe72bfa /gcc | |
parent | 9a2db19920ccf87adac7ec25807ca0608d9d022e (diff) | |
download | gcc-32dfd2e0335282119b8f03e3e05676bdbf6fca84.zip gcc-32dfd2e0335282119b8f03e3e05676bdbf6fca84.tar.gz gcc-32dfd2e0335282119b8f03e3e05676bdbf6fca84.tar.bz2 |
genmatch.c (expr::gen_transform): Use NOP_EXPRs instead of CONVERT_EXPRs in generated code.
2014-10-31 Richard Biener <rguenther@suse.de>
* genmatch.c (expr::gen_transform): Use NOP_EXPRs instead of
CONVERT_EXPRs in generated code.
(dt_simplify::gen): Likewise.
From-SVN: r216977
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/genmatch.c | 24 |
2 files changed, 22 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ae60aef..561a876 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-10-31 Richard Biener <rguenther@suse.de> + + * genmatch.c (expr::gen_transform): Use NOP_EXPRs instead of + CONVERT_EXPRs in generated code. + (dt_simplify::gen): Likewise. + 2014-10-31 Evgeny Stupachenko <evstupac@gmail.com> PR target/63534 diff --git a/gcc/genmatch.c b/gcc/genmatch.c index d238a50..7ceb080 100644 --- a/gcc/genmatch.c +++ b/gcc/genmatch.c @@ -1384,14 +1384,19 @@ expr::gen_transform (FILE *f, const char *dest, bool gimple, int depth, ops[i]->gen_transform (f, dest, gimple, depth + 1, optype, indexes); } + const char *opr; + if (*operation == CONVERT_EXPR) + opr = "NOP_EXPR"; + else + opr = operation->id; + 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", - operation->id, type); + " res = gimple_simplify (%s, %s", opr, type); for (unsigned i = 0; i < ops.length (); ++i) fprintf (f, ", ops%d[%u]", depth, i); fprintf (f, ", seq, valueize);\n"); @@ -1399,7 +1404,7 @@ expr::gen_transform (FILE *f, const char *dest, bool gimple, int depth, fprintf (f, " }\n"); fprintf (f, " else\n"); fprintf (f, " res = gimple_build (seq, UNKNOWN_LOCATION, %s, %s", - operation->id, type); + opr, type); for (unsigned i = 0; i < ops.length (); ++i) fprintf (f, ", ops%d[%u]", depth, i); fprintf (f, ", valueize);\n"); @@ -1408,11 +1413,10 @@ expr::gen_transform (FILE *f, const char *dest, bool gimple, int depth, { if (operation->kind == id_base::CODE) fprintf (f, " res = fold_build%d_loc (loc, %s, %s", - ops.length(), operation->id, type); + ops.length(), opr, type); else fprintf (f, " res = build_call_expr_loc (loc, " - "builtin_decl_implicit (%s), %d", - operation->id, ops.length()); + "builtin_decl_implicit (%s), %d", opr, ops.length()); for (unsigned i = 0; i < ops.length (); ++i) fprintf (f, ", ops%d[%u]", depth, i); fprintf (f, ");\n"); @@ -2186,7 +2190,9 @@ dt_simplify::gen (FILE *f, bool gimple) expr *e = as_a <expr *> (result); bool is_predicate = is_a <predicate_id *> (e->operation); if (!is_predicate) - fprintf (f, "*res_code = %s;\n", e->operation->id); + fprintf (f, "*res_code = %s;\n", + *e->operation == CONVERT_EXPR + ? "NOP_EXPR" : e->operation->id); for (unsigned j = 0; j < e->ops.length (); ++j) { char dest[32]; @@ -2264,7 +2270,9 @@ dt_simplify::gen (FILE *f, bool gimple) { if (e->operation->kind == id_base::CODE) fprintf (f, " res = fold_build%d_loc (loc, %s, type", - e->ops.length (), e->operation->id); + e->ops.length (), + *e->operation == CONVERT_EXPR + ? "NOP_EXPR" : e->operation->id); else fprintf (f, " res = build_call_expr_loc " "(loc, builtin_decl_implicit (%s), %d", |