[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