On Mon, 2014-11-03 at 15:03 -0700, Jeff Law wrote:
> On 10/31/14 11:02, David Malcolm wrote:
> > Implementation of the gcc::jit::recording internal API, so that
> > libgccjit.c can record the calls that are made to the public API, for
> > later playback by the dummy frontend.
> >
> > gcc/jit/
> >     * jit-recording.c: New.
> Cursory review since it's the JIT implementation directory which you'll 
> likely end up owning...
> 
> 
> > +
> > +/* Assuming that this block has been terminated, get the number of
> > +   successor blocks, which will be 0, 1 or 2, for return, unconditional
> > +   jump, and conditional jump respectively.
> > +   NEXT1 and NEXT2 must be non-NULL.  The first successor block (if any)
> > +   is written to NEXT1, and the second (if any) to NEXT2.
> > +
> > +   Used when validating functions, and when dumping dot representations
> > +   of them.  */
> So presumably no multi-way branches yet?  Might be better to build the 
> API in such a way that it handles multi-way branches from the get-go 
> rather than retrofitting later.  Your call.

This is an internal API.  If the external API needs to support building
switch statements from client code maybe with something like this:

  extern void
  gcc_jit_block_end_with_switch (gcc_jit_block *block,
                                 gcc_jit_location *loc,
                                 gcc_jit_rvalue *expr,
                                 int num_cases,
                                 gcc_jit_rvalue **case_values,
                                 gcc_jit_block **case_blocks,
                                 gcc_jit_block *default_block);

then this internal API would obviously need to change, maybe becoming:

  virtual int get_num_successor_blocks () const;
  virtual block *get_successor_block (int index) const;

but that won't affect the public API.

That said it's not clear to me that we do need to support switch
statements; no JIT implementation I've seen has needed them
(I put them in the "Probably not needed" section of TODO.rst).

> Otherwise I don't see anything objectionable.  OK for the trunk.

Thanks
Dave



Reply via email to