libcpp: __VA_OPT__ tweak
authorJason Merrill <jason@redhat.com>
Wed, 1 Sep 2021 19:33:30 +0000 (21:33 +0200)
committerJakub Jelinek <jakub@redhat.com>
Wed, 1 Sep 2021 19:33:30 +0000 (21:33 +0200)
commitac6e77aacfb6581f5e84e4430628152b9b98da2e
tree860c5cb23c00a1c5fe42194176931811d9f698e8
parente928cf47f350e46eacb48ed954112e603ef3800a
libcpp: __VA_OPT__ tweak

> We want to remove the latter <placemarker> but not the former one, and
> the patch adds the vaopt_padding_tokens counter for it to control
> how many placemarkers are removed on vaopt_state::END.
> As can be seen in #c1 and #c2 of the PR, I've tried various approaches,
> but neither worked out for all the cases except the posted one.

I notice that the second placemarker you mention is avoid_paste, which seems
relevant.  This seems to also work, at least it doesn't seem to break any of
the va_opt tests.

2021-09-01  Jason Merrill  <jason@redhat.com>

* macro.c (replace_args): When __VA_OPT__ is on the LHS of ##,
remove trailing avoid_paste tokens.
libcpp/macro.c