[PATCH] D102280: [analyzer] Engine: fix crash with SEH __leave keyword

Balázs Benics via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 14 03:38:02 PDT 2021


steakhal added a comment.

Do you have any good (mature, big enough) open-source projects for these msvc constructs?



================
Comment at: clang/lib/StaticAnalyzer/Core/CoreEngine.cpp:352
 
+      case Stmt::SEHLeaveStmtClass:
       case Stmt::ContinueStmtClass:
----------------
AbbasSabra wrote:
> steakhal wrote:
> > You should probably extend the `ExprEngine.cpp:1312` in a similar fashion.
> isn't it already handled in  !!ExprEngine.cpp:1239!!?
Good point.
At the other switch it states, that this leave statement is unsupported. I guess it will stay unsupported for a while because we don't model exceptions at all. Treat my previous comment as resolved.


================
Comment at: clang/test/Analysis/misc-ms-leave.cpp:9
+    __leave; // no-crash
+  } __except (filter()) {
+  }
----------------
I'm curious to see if any statement after the `__leave` is executed. Could you place another warnIfReached there too?

Also, this file could contain all the ms try except constructs. That we might plan to support in the future.
So, a more generic file name would be more future-proof I guess.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D102280



More information about the cfe-commits mailing list