This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: "gimple-classes-v2-option-3" git branch committed to svn trunk as r217787


On November 19, 2014 10:09:56 PM CET, Andrew MacLeod <amacleod@redhat.com> wrote:
>On 11/19/2014 03:43 PM, Richard Biener wrote:
>> On November 19, 2014 8:26:23 PM CET, Andrew MacLeod
><amacleod@redhat.com> wrote:
>>> On 11/19/2014 01:12 PM, David Malcolm wrote:
>>>
>>>> (A) could become:
>>>>
>>>>     greturn *stmt = gsi->as_a_greturn ();
>>>>
>>>> (B) could become:
>>>>
>>>>     stmt = gsi->dyn_cast <gcall *> ();
>>>>     if (!stmt)
>>>> or:
>>>>
>>>>     stmt = gsi->dyn_cast_gcall ();
>>>>     if (!stmt)
>>>>
>>>> or maybe:
>>>>
>>>>     stmt = gsi->is_a_gcall ();
>>>>     if (!stmt)
>>>>
>>>> An earlier version of my patches had casting methods within the
>>>> gimple_statement_base class, which were rejected; the above
>proposals
>>>> would instead put them within gimple_stmt_iterator.
>>>>
>>> I would like all gsi routines to be consistent, not a mix of
>functions
>>> and methods.
>>> so something like
>>>
>>> stmt = gsi_as_call (gsi);
>>> stmt = gsi_dyn_call (gsi);
>>>
>>> or we need to change gsi_stmt() and friends into methods and access
>>> them
>>> as gsi->stmt ()..  which is possibly better, but that much more
>>> intrusive again (another 2000+ locations).
>>> If we switched to methods everywhere for gsi, I'd prefer something
>like
>>> gsi->as_a_call ()
>>> gsi->is_a_call ()
>>> gsi->dyn_cast_call ()
>>>
>>> I think its more readable... and it removes a dependency on the
>>> implementation.. so if we ever decide to change the name of 'gcall'
>>> down
>>> the road to using a namespace, and make it gimple::call or whatever,
>we
>>>
>>> wont have to change every single gsi-> location which has a
>templated
>>> use of the type.
>>>
>>> I'm also think this sort of thing could probably wait until next
>stage
>>> 1..
>>>
>>> my 2 cents...
>> Why not as_a <gassign *> (*gsi)?  It would
>> Add operator* to gsi of course.
>>
>> Richard.
>>
>>
>
>I could live with that form too.
>
>we often have an instance of gimple_stmt_iterator rather than a pointer
>
>to it, so wouldn't  "operator gimple *()" to implicitly call gsi_stmt()
>
>when needed work better?     (or "operator gimple ()" before the next 
>change) ..

Not sure.  The * matches how iterators work in STL...

Note that for the cases where we pass a pointer to an iterator we can change those to use references to avoid writing **gsi.

Richard.

>Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]