[C PATCH] Follow-up fix to the misclassified token problem (PR c/67784)

Joseph Myers joseph@codesourcery.com
Tue Apr 26 11:45:00 GMT 2016


On Tue, 26 Apr 2016, Marek Polacek wrote:

> This PR was reopened, because the exact same problem with treating a TYPENAME
> wrongly as an ID was found when using just if-clause, without an enclosing for
> loop.  More details: <https://gcc.gnu.org/ml/gcc-patches/2015-11/msg01588.html>.
> That fix had a follow-up, because it broke some ObjC code.
> 
> To fix this, we need to use the (amended) token reclassification even when
> parsing an if statement.  I factored the code into a separate function so as to
> not repeat the very same code.
> 
> Bootstrapped/regtested on x86_64-linux, ok for trunk?

I think you need more thorough testcases, to cover the cases where the if 
statement with no else forms the body of a switch or while statement, and 
the declaration in question appears in the expression of that switch or 
while statement, e.g.

typedef int T;

switch (sizeof (enum { T }))
  if (1)
    ;
T x;

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Gcc-patches mailing list