aboutsummaryrefslogtreecommitdiff
path: root/gcc/genemit.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2015-06-26 10:06:56 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2015-06-26 10:06:56 +0000
commit9d8895c9342d2c46d7d7e9b0437879db9d60cf7c (patch)
tree8a2e3d3e02ca429c89dc152311efede46fcf29ac /gcc/genemit.c
parent311bd4d8973d4ad8727e3dcf842fbc4bcfd12d7b (diff)
downloadgcc-9d8895c9342d2c46d7d7e9b0437879db9d60cf7c.zip
gcc-9d8895c9342d2c46d7d7e9b0437879db9d60cf7c.tar.gz
gcc-9d8895c9342d2c46d7d7e9b0437879db9d60cf7c.tar.bz2
rtl.h (emit): Add an optional boolean parameter to control whether barriers are emitted.
gcc/ * rtl.h (emit): Add an optional boolean parameter to control whether barriers are emitted. * emit-rtl.c (emit): Likewise. * gensupport.c (get_emit_function): Return null rather than "emit". * genemit.c (gen_emit_seq): Handle the null return value. Don't emit barriers after the final instruction in the sequence. * gentarget-def.c (main): Don't emit barriers after the instruction. From-SVN: r225000
Diffstat (limited to 'gcc/genemit.c')
-rw-r--r--gcc/genemit.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/genemit.c b/gcc/genemit.c
index 15ec081..4ee07a0 100644
--- a/gcc/genemit.c
+++ b/gcc/genemit.c
@@ -277,12 +277,22 @@ gen_emit_seq (rtvec vec, char *used)
{
for (int i = 0, len = GET_NUM_ELEM (vec); i < len; ++i)
{
+ bool last_p = (i == len - 1);
rtx next = RTVEC_ELT (vec, i);
- printf (" %s (", get_emit_function (next));
- gen_exp (next, DEFINE_EXPAND, used);
- printf (");\n");
- if (needs_barrier_p (next))
- printf (" emit_barrier ();");
+ if (const char *name = get_emit_function (next))
+ {
+ printf (" %s (", name);
+ gen_exp (next, DEFINE_EXPAND, used);
+ printf (");\n");
+ if (!last_p && needs_barrier_p (next))
+ printf (" emit_barrier ();");
+ }
+ else
+ {
+ printf (" emit (");
+ gen_exp (next, DEFINE_EXPAND, used);
+ printf (", %s);\n", last_p ? "false" : "true");
+ }
}
}