diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2015-06-26 10:06:56 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2015-06-26 10:06:56 +0000 |
commit | 9d8895c9342d2c46d7d7e9b0437879db9d60cf7c (patch) | |
tree | 8a2e3d3e02ca429c89dc152311efede46fcf29ac /gcc/genemit.c | |
parent | 311bd4d8973d4ad8727e3dcf842fbc4bcfd12d7b (diff) | |
download | gcc-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.c | 20 |
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"); + } } } |