Implementing p0515 - spaceship operator
Tim van Deurzen
tim@kompiler.org
Tue Jan 9 22:56:00 GMT 2018
On 01/08/2018 11:28 PM, Jason Merrill wrote:
> On Mon, Jan 8, 2018 at 5:13 PM, Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
>> On 8 January 2018 at 22:07, Jason Merrill wrote:
>>> On Mon, Jan 8, 2018 at 4:07 PM, Tim van Deurzen <tim@kompiler.org> wrote:
>>>> I've been spending some time the past few weeks implementing p0515r2,
>>>> i.e. the proposal for consistent comparisons for C++ (aka the spaceship
>>>> operator).
>>> Great!
>>>
>>>> I've received some very valuable help on the IRC channel, but
>>>> I'm still a little bit stuck. Note, I'm completely new to the GCC
>>>> codebase and am very much still getting oriented.
>>>>
>>>> Following advice from some of the people in IRC channel I implemented
>>>> parsing the new token in libcpp and I seem to be successfully parsing it
>>>> and creating a new AST node. As this feature is not in the C++ standard
>>>> yet, I wanted to add a command line flag to enable usage of the new
>>>> operator and ignoring it otherwise. I managed to get cc1plus to accept
>>>> the parameter, but it seems that when I invoke my own g++ binary with
>>>> that parameter, it complains about unknown parameters.
>>>>
>>>> I'm perfectly happy to dig further on my own, but I get the feeling I'm
>>>> missing some documentation / resource somewhere that might help me out.
>>>> Is there some documentation about adding and passing around parameters
>>>> that will be used both in libcpp and the C++ front-end? What would be
>>>> the best place to look to learn more about how part of GCC this is
>>>> structured? I want to make sure I go about this correctly.
>>> There's a gccint.info documentation file, the Options node seems like
>>> what you're looking for. You will want to add a new option to
>>> c-family/c.opt.
>> operator<=> is now in the working paper though, so does it need its
>> own option? IMHO it should just be enabled for -std=c++2a and
>> -std=gnu++2a, and not otherwise.
> Ah, good point.
>
> Jason
That makes sense, I'll just use the c++2a and gnu++2a flags. Though I'll
still take some time to figure out how options work, so that I can add
any toggles that (e.g. for warnings) that might be specific to operator<=>.
Just to confirm with you, it does make sense to conditionally parse the
token for operator<=> in libcpp (i.e. only when the cxx standard being
used is >=2a)? I'm just wondering if this does not accidentally affect
other front-ends using libcpp?
Tim.
More information about the Gcc
mailing list