https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119117

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
>This got broken by the C2y if declarations implementation (PR c/117019, commit 
>440be01).

No it was broken before that; just now exposed by it because it thinks `unknown
* b` will be a declaration but in this case unknown is the same as
`self->unknown`.

The way unknown gets resolved later on to be self->unknown is not happening. 
Note it is only an issue with `*` here and that makes me think the patch for PR
20385 caused it.

I will take a look on how to fix this later this week.

But the issue is here:
```
  /* Try to detect an unknown type name when we have "A B" or "A *B".  */
  if (c_parser_peek_token (parser)->type == CPP_NAME
      && c_parser_peek_token (parser)->id_kind == C_ID_ID
      && (c_parser_peek_2nd_token (parser)->type == CPP_NAME
          || c_parser_peek_2nd_token (parser)->type == CPP_MULT)
      && (!nested || !lookup_name (c_parser_peek_token (parser)->value)))

```

Specifically for the CPP_MULT case. I suspect there needs to a check to see if
we are inside a Objective-C method or not; similarly how nested is handled.

Reply via email to