[PATCH] D41815: [clang-tidy] implement check for goto
Jonas Toth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 11 04:24:56 PST 2018
JonasToth added inline comments.
================
Comment at: clang-tidy/cppcoreguidelines/AvoidGotoCheck.cpp:22
+ if (getLangOpts().CPlusPlus)
+ Finder->addMatcher(gotoStmt().bind("goto"), this);
+}
----------------
aaron.ballman wrote:
> JonasToth wrote:
> > aaron.ballman wrote:
> > > aaron.ballman wrote:
> > > > Are you planning to add the exception listed in the C++ Core Guideline? It makes an explicit exception allowing you to jump forward out of a loop construct.
> > > What should this check do with indirect goto statements (it's a GCC extension we support where you can jump to an expression)?
> > >
> > > Regardless, there should be a test for indirect gotos and jump forward out of loop constructs.
> > > Are you planning to add the exception listed in the C++ Core Guideline? It makes an explicit exception allowing you to jump forward out of a loop construct.
> >
> > I do plan for this. Because I dont have any experience with gotos I wanted to do it in small steps.
> >
> > > What should this check do with indirect goto statements (it's a GCC extension we support where you can jump to an expression)?
> > Iam not aware of these :)
> >> What should this check do with indirect goto statements (it's a GCC extension we support where you can jump to an expression)?
> >
> > Iam not aware of these :)
>
> https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
> (and a good reference on why these are interesting: https://eli.thegreenplace.net/2012/07/12/computed-goto-for-efficient-dispatch-tables)
I would think that this is a special feature that will only be used if you know what you are doing. So it should be allowed with configuration. I am not sure about the default though. For now it is ignored.
HICPP has a rule on gotos as well, which states that only forward jumps are allowed.
I think that these different approaches to `goto` should land here sometime as different configurations.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D41815
More information about the cfe-commits
mailing list