[PATCH] D75844: [clang] Set begin loc on GNU attribute parsed attrs

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 9 14:35:40 PDT 2020


aaron.ballman added a comment.

Thank you for the patch! It should also have some test cases associated with it. I'd recommend adding a test to the `AST` directory that do AST dumps where you test the line and column information directly.



================
Comment at: clang/lib/Parse/ParseStmt.cpp:238-239
     GNUAttributeLoc = Tok.getLocation();
+    Attrs.Range.setBegin(GNUAttributeLoc);
     ParseGNUAttributes(Attrs);
     goto Retry;
----------------
This seems wrong -- it may not be the first attribute in the statement (this is in `ParseStatementOrDeclarationAfterAttributes()`), so there may already be `[[]]` attributes that have been parsed, which this will overwrite. You would need to see if the start range is invalid and only set this in that case.

However, wouldn't it make more sense for `ParseGNUAttributes()` to accept a `ParsedAttributesWithRange` and properly set the range there? (This may have a larger impact though, because that function gets called in a lot more code paths than this switch case does. I suspect we have a fair amount of improvements we could make with attribute source ranges.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75844/new/

https://reviews.llvm.org/D75844





More information about the cfe-commits mailing list