Hi Joseph,
        The fixed patch and the changelogs are attached in this 
email(http://gcc.gnu.org/ml/gcc-patches/2013-08/msg00758.html). I have 
addressed your concerns below:

Thanks,

Balaji V. Iyer.

> -----Original Message-----
> From: Joseph Myers [mailto:jos...@codesourcery.com]
> Sent: Friday, August 09, 2013 12:52 PM
> To: Iyer, Balaji V
> Cc: Aldy Hernandez; r...@redhat.com; Jeff Law; gcc-patches@gcc.gnu.org
> Subject: RE: [PATCH] Cilk Keywords (_Cilk_spawn and _Cilk_sync) for C
> 
> On Thu, 8 Aug 2013, Iyer, Balaji V wrote:
> 
> > +enum add_variable_type  {
> 
> Two spaces before '{', should be one.
> 
> > +static HOST_WIDE_INT cilk_wrapper_count;
> 
> This is HOST_WIDE_INT but you use it later with sprintf with %ld; you need to
> use HOST_WIDE_INT_PRINT_DEC in such a case
> 
> > +  tree map = (tree)*map0;
> 
> There are several places like this where you are missing a space in a cast, 
> which
> should be "(tree) *map0".

Fixed!

> 
> > +  /* Build the Cilk Stack Frame:
> > +     struct __cilkrts_stack_frame {
> > +       uint32_t flags;
> > +       uint32_t size;
> > +       struct __cilkrts_stack_frame *call_parent;
> > +       __cilkrts_worker *worker;
> > +       void *except_data;
> > +       void *ctx[4];
> > +       uint32_t mxcsr;
> > +       uint16_t fpcsr;
> > +       uint16_t reserved;
> > +       __cilkrts_pedigree pedigree;
> > +     };  */
> > +
> > +  tree frame = lang_hooks.types.make_type (RECORD_TYPE);  tree
> > + frame_ptr = build_pointer_type (frame);  tree worker_type =
> > + lang_hooks.types.make_type (RECORD_TYPE);  tree worker_ptr =
> > + build_pointer_type (worker_type);  tree s_type_node = build_int_cst
> > + (size_type_node, 4);
> > +
> > +  tree flags = add_field ("flags", unsigned_type_node, NULL_TREE);
> > + tree size = add_field ("size", unsigned_type_node, flags);
> 
> You refer to some fields as uint32_t above but then build them as unsigned 
> int;
> you should be consistent.
> 
Fixed.

> I'm also suspicious of the "mxcsr" and "fpcsr" fields and associated enum 
> values.
> They don't really appear to be *used* for anything semantic in this patch -
> there's just boilerplate code dealing with creating them.  So I don't know 
> what
> the point of them is at all - is there an associated runtime using them to be
> added by another patch in this series?  The problem is that they sound
> architecture-specific - they sound like they relate to registers on one 
> particular
> architecture - meaning that they should actually be created by target hooks
> which might create different sets or sizes of such fields on different
> architectures (and they shouldn't appear at all in an enum in architecture-
> independent code, in that case).
> 
 
They are removed.

> > +  tree mxcsr = add_field ("mxcsr", uint32_type_node, context);  tree
> > + fpcsr = add_field ("fpcsr", uint16_type_node, mxcsr);  tree reserved
> > + = add_field ("reserved", uint16_type_node, fpcsr);
> 
> Note that uint32_type_node and uint16_type_node are internal types that may
> or may not correspond to the stdint.h C typedefs (one could be unsigned int 
> and
> the other unsigned long, for example).  If this matters then you may need to
> work out how to use c_uint32_type_node etc. instead (but this code is outside
> the front end, so that may not be easy to do).
> (Cf. what I said in
> <http://gcc.gnu.org/ml/gcc-patches/2013-06/msg00248.html> about the
> remaining, presumably unmaintained, targets without stdint.h type information
> in GCC.)
> 

> > +       int32_t self;
> 
> > +  field = add_field ("self", unsigned_type_node, field);
> 
> Again, inconsistency of type.
> 

Fixed

> > +Used to represent a spawning function in the Cilk Plus language extension.
> > +This tree has one field that holds the name of the spawning function.
> > +_Cilk_spawn can be written in C in the following way:
> 
> @code{_Cilk_spawn} (and likewise _Cilk_sync), in several places.

Fixed.

> 
> > +Detailed description for usage and functionality of _Cilk_spawn can
> > +be found at http://www.cilkplus.org
> 
> Use an actual link.
> 
We have recently launched the website, so the actual link might change. I will 
change it to the following:
Documentation about Cilk Plus and language specification is provided under the
"Learn" section in @w{@uref{http://www.cilkplus.org/}}.  

> > diff --git a/gcc/tree.h b/gcc/tree.h
> > index 0058a4b..952362f 100644
> > --- a/gcc/tree.h
> > +++ b/gcc/tree.h
> > @@ -262,6 +262,7 @@ enum built_in_class
> >    NOT_BUILT_IN = 0,
> >    BUILT_IN_FRONTEND,
> >    BUILT_IN_MD,
> > +  BUILT_IN_CILK,
> >    BUILT_IN_NORMAL
> >  };
> >
> > @@ -439,6 +440,8 @@ struct GTY(()) tree_base {
> >    unsigned protected_flag : 1;
> >    unsigned deprecated_flag : 1;
> >    unsigned default_def_flag : 1;
> > +  unsigned is_cilk_spawn : 1;
> > +  unsigned is_cilk_spawn_detach_point : 1;
> 
> No, absolutely not.  This would expand all trees by a whole word.  Find a way 
> to
> do whatever you need without increasing memory consumption like that.
> 

OK. Removed.

> > @@ -3496,7 +3508,7 @@ struct GTY(()) tree_function_decl {
> >       ???  The bitfield needs to be able to hold all target function
> >       codes as well.  */
> >    ENUM_BITFIELD(built_in_function) function_code : 11;
> > -  ENUM_BITFIELD(built_in_class) built_in_class : 2;
> > +  ENUM_BITFIELD(built_in_class) built_in_class : 3;
> >
> >    unsigned static_ctor_flag : 1;
> >    unsigned static_dtor_flag : 1;
> 
> Again, no.  See the comment "No bits left." at the bottom of this structure.
> Expanding widely used datastructures is a bad idea, although this one isn't as
> bad to expand as tree_base.
> 

Ok. Removed this one too.

> --
> Joseph S. Myers
> jos...@codesourcery.com

Reply via email to