On Fri, May 11, 2012 at 02:12:32PM +0200, Michael Matz wrote:

> On Fri, 11 May 2012, Basile Starynkevitch wrote:
> 
> > However, the type gimple_seq still appears in a lot of source files 
> > (mostly gcc/gimple*.c & gcc/tree*.c)
> > 
> > Is this intended, or is this a temporary situation, and 
> > further patches would remove all occurrences of gimple_seq everywhere?
> 
> I'm personally undecided.  Retaining gimple_seq would make it possible to 
> change the implementation of sequences to something else relatively 
> easily.  


Then perhaps we should better have something like

  /* a single GIMPLE statement. 
     Take care to use the gimple type when you are thinking of a single 
statement 
     only, e.g. to retrieve its operands. */
  typedef union gimple_statement_d *gimple;

  /* a sequence of GIMPLE statements.
     Use the gimple_seq type when thinking of a sequence of statements. 
     The gimple_seq might have a different representation some day (and used to 
have one).
    */
  typedef union gimple_statement_d *gimple_seq;

I believe the above is more understandable than a "typedef gimple gimple_seq;"
which brings some assymetry in the code.



If coding in C++, we could have
  typedef class Gimple *gimple;
  typedef class GimpleSeq *gimple_qeq;
  
And if we coded in C++, we would dare having

  class Gimple_statement_data {
    //....
  };

  class Gimple : public Gimple_statement_data {
    //....
  }
  
  class GimpleSeq : public Gimple_statement_data {
    //....
  };

I really think that it is important to decide *now* 
if gimple and gimple_seq are conceptually different
(and to document and comment that) or the same. 

As you suggest, if we don't make a clear statement in a comment 
and in documentation, things will surely degrade with time.

Cheers.
-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***

Reply via email to