[PATCH][1/2] GIMPLE Frontend, C FE parts (and GIMPLE parser)

Richard Biener rguenther@suse.de
Thu Nov 10 18:51:00 GMT 2016


On November 10, 2016 6:38:12 PM GMT+01:00, Joseph Myers <joseph@codesourcery.com> wrote:
>On Fri, 28 Oct 2016, Richard Biener wrote:
>
>> +/* Parse a gimple expression.
>> +
>> +   gimple-expression:
>> +     gimple-unary-expression
>> +     gimple-call-statement
>> +     gimple-binary-expression
>> +     gimple-assign-expression
>> +     gimple-cast-expression
>
>I don't see any comments expanding what the syntax is for most of these
>
>constructs.
>
>> +  if (c_parser_next_token_is (parser, CPP_EQ))
>> +    c_parser_consume_token (parser);
>
>That implies you're allowing an optional '=' at this point in the
>syntax.  
>That doesn't seem to make sense to me; I'd expect you to do if (=) { 
>process assignment; } else { other cases; } or similar.
>
>> +  /* GIMPLE PHI expression.  */
>> +  if (c_parser_next_token_is_keyword (parser, RID_PHI))
>
>I don't see this mentioned in any of the syntax comments.
>
>> +  struct {
>> +    /* The expression at this stack level.  */
>> +    struct c_expr expr;
>> +    /* The operation on its left.  */
>> +    enum tree_code op;
>> +    /* The source location of this operation.  */
>> +    location_t loc;
>> +  } stack[2];
>> +  int sp;
>> +  /* Location of the binary operator.  */
>> +  location_t binary_loc = UNKNOWN_LOCATION;  /* Quiet warning.  */
>> +#define POP								      \
>
>This all looks like excess complexity.  The syntax in the comment 
>indicates that in GIMPLE, the operands of a binary expression are unary
>
>expressions.  So nothing related to precedence is needed at all, and
>you 
>shouldn't need this stack construct.

I'll address those comments.  As you did not have any comments on the c-parser.[CH] parts does that mean you are fine with them?  That is, does the above constitute a complete review of the patch?

Thanks,
Richard.




More information about the Gcc-patches mailing list