LGTM with minor tweaks.

  I'm still not sure we've got the function template specialization case right, 
but I think this adds most of the value as-is, and I think you're right to 
blacklist an area with known false positives over not having the warning at all.


================
Comment at: lib/Lex/Pragma.cpp:934-936
@@ -929,4 +933,5 @@
+#endif
   void DebugOverflowStack() {
     DebugOverflowStack();
   }
 #ifdef _MSC_VER
----------------
Somewhat unrelated to your patch, but this looks broken (at `-O1` or above). 
How about replacing this with:

  static void DebugOverflowStack() {
    void (*volatile Self)() = DebugOverflowStack;
    self();
  }

That should both suppress your warning (and presumably the MSVC warning) and 
make this function work reliably.

================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:90-93
@@ +89,6 @@
+
+static void CheckForFunctionCall(Sema &S, const FunctionDecl *FD,
+                                 CFGBlock& Block, unsigned exitID,
+                                 llvm::SmallVectorImpl<RecursiveState> &states,
+                                 RecursiveState state) {
+  unsigned ID = Block.getBlockID();
----------------
For new code, please follow the coding style's formatting rules 
(`checkForFunctionCall`, `States`, `State`, `ExitID`, and `" &"` not `"& "`).

================
Comment at: lib/Sema/AnalysisBasedWarnings.cpp:96-99
@@ +95,6 @@
+
+  if (states[ID] < state)
+    states[ID] = state;
+  else
+    return;
+
----------------
Maybe

  if (States[ID] >= State)
    return;

  States[ID] = State;
  // ...


http://llvm-reviews.chandlerc.com/D1864
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to