public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "joseph at codesourcery dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug preprocessor/58887] Allow recursion in variadic macros?
Date: Wed, 30 Oct 2013 16:56:00 -0000	[thread overview]
Message-ID: <bug-58887-4-xN0hdMrrL1@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-58887-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58887

--- Comment #12 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
On Wed, 30 Oct 2013, mtewoodbury at gmail dot com wrote:

> I think I understand consensus, but I only hear your voice here, not the voice
> of a multitude.  You may be part of the consensus you speak of, but you are not

I was agreeing with Andrew.  Jason, the other maintainer likely to review 
libcpp patches, hasn't commented on this issue.  (There are plenty of 
others who *can* review such patches but are unlikely to do so in 
practice.)

That someone doesn't reply to some point (if they read it) only indicates, 
at most, that they do not have anything to add that has not already been 
said adequately somewhere in the totality of the discussion, rather than 
whether they agree or disagree.

> >> But that bug was filed on the wrong component and has languished for YEARS
> >> as a result of that miss-filing.  It looks like no one has looked at its
> >> problem seriously...
> > 
> > That maintainers wouldn't necessarily object to the addition of a feature 
> > doesn't mean any maintainer has any interest in implementing it.  There 
> > are lots of "bugs" filed suggesting some vaguely reasonable new feature 
> > that was of interest to the submitter but not of sufficient interest to 
> > anyone wanting to implement it (but not rejected either, because the 
> > feature might well be accepted if implemented).
> 
> I have worked for companies where there was a formal definition of roles, and
> what you describe is something from that world.  On the other hand, I believe
> open-source projects like GCC have less authoritarian structures and that such
> decisions are much less formal.  In other words, membership in 'maintainers' is
> consensus based on merit, not the open and shut rule of corporate structure.

Bugs languish because the maintainers - and other developers who might fix 
them - are individuals, there is indeed no formal structure as regards 
reviewing bugs or assigning people to fix them, and each individual who 
looked at it was not interested in implementing the feature / fixing the 
bug.  Misfiling is only a minor part - it could be relevant, if someone 
had gone through all the "preprocessor" bugs, implementing lots of things, 
and missed that one because it wasn't a "preprocessor" bug - but it so 
happens no-one has been active in that way with preprocessor bugs lately.

Maintainers are appointed by the Steering Committee (based on merit) (but 
someone's views on a patch or feature can be relevant and useful without 
them being a maintainer who can approve the patch).

> As I said, I need to go over it carefully.  It is obviously pseudo-code and
> both the code and the explanation deserve careful study.  Where it has built in
> the no-recursion rule was not quite obvious at first glance, thus the remark
> about hand waving.  Again, I need to study it carefully, and I have not done
> that yet...

No-recursion is built in through hide sets - that is, each token has at 
each time an associated set of names of macros that cannot be expanded if 
encountered when expanding that token.  Thus, when expanding a macro M, 
the name M is added to the hide sets of the tokens in the expansion before 
they, and the rest of the input, are considered for reexpansion (for 
details see the pseudocode).

Some discussions of C macro expansion use the term "blue paint" when 
discussing the rules for recursion.

Your proposal is apparently something that means a macro is no longer in 
or out of a hide set, but in a state meaning whether it can be expanded 
depends on the number of parameters.  Maybe the hide sets will need to 
contain pairs (macro, number of arguments), or something like that, 
instead of just macro names.


  parent reply	other threads:[~2013-10-30 16:56 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-58887-4@http.gcc.gnu.org/bugzilla/>
2013-10-26 21:13 ` [Bug preprocessor/58887] Allow recursion in varadic macros? pinskia at gcc dot gnu.org
2013-10-27 13:44 ` mtewoodbury at gmail dot com
2013-10-27 15:48 ` [Bug preprocessor/58887] Allow recursion in variadic macros? joseph at codesourcery dot com
2013-10-27 21:52 ` mtewoodbury at gmail dot com
2013-10-27 21:56 ` mtewoodbury at gmail dot com
2013-10-28 11:35 ` mtewoodbury at gmail dot com
2013-10-28 13:38 ` joseph at codesourcery dot com
2013-10-28 13:56 ` joseph at codesourcery dot com
2013-10-28 17:48 ` mtewoodbury at gmail dot com
2013-10-28 18:51 ` joseph at codesourcery dot com
2013-10-30 10:04 ` mtewoodbury at gmail dot com
2013-10-30 16:56 ` joseph at codesourcery dot com [this message]
2013-10-30 19:00 ` mtewoodbury at gmail dot com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-58887-4-xN0hdMrrL1@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).