Warn when jumping out of a __finally block via goto.
authorNico Weber <nicolasweber@gmx.de>
Mon, 9 Mar 2015 04:27:56 +0000 (04:27 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 9 Mar 2015 04:27:56 +0000 (04:27 +0000)
commiteb0cfb5ab0bcd3c794aaf1425b38ef165d64eabb
treef11cdd887e6b2a8feae59ebb743cd3dbe48393f4
parent5768e9fde95e03a0fc5388a7814670cee1ae21e9
Warn when jumping out of a __finally block via goto.

This only warns on direct gotos and indirect gotos with a unique label
(`goto *&&label;`).  Jumping out ith a true indirect goto is already an error.

This isn't O(1), but goto statements are less common than continue, break, and
return.  Also, the GetDeepestCommonScope() call in the same function does the
same amount of work, so this isn't worse than what's there in a complexity
sense, and it should be pretty fast in practice.

This is the last piece that was missing in r231623.

llvm-svn: 231628
clang/lib/Sema/JumpDiagnostics.cpp
clang/test/SemaCXX/scope-check.cpp