================
Comment at: lib/CodeGen/CGException.cpp:1702
@@ +1701,3 @@
+llvm::Constant *
+CodeGenFunction::GenerateSEHFilterFunction() {
+  // Get the mangled function name.
----------------
Can you at least document what the point of this is?

================
Comment at: lib/CodeGen/CGException.cpp:1772
@@ +1771,3 @@
+
+  if (SEHFinallyStmt *Finally = S.getFinallyHandler()) {
+    // SEH cleanups should be simple.
----------------
Doesn't the finally handler need to be active within the catch handler?  You 
probably need to push it first.

================
Comment at: lib/CodeGen/CGException.cpp:1821
@@ +1820,3 @@
+    }
+    Builder.CreateCall(FilterIntrin, R);
+
----------------
Shouldn't you be branching on the filter result or something?  It feels wrong 
for the control flow here to be implicit.

================
Comment at: lib/CodeGen/CGException.cpp:1830
@@ +1829,3 @@
+  }
+
+  if (SEHFinallyStmt *Finally = S.getFinallyHandler()) {
----------------
Yeah, you're popping it after you pop the catch.  That can't possibly work if 
you pushed the catch first.

This also suggests that you aren't testing that adequately. :)

================
Comment at: lib/Sema/SemaChecking.cpp:467
@@ +466,3 @@
+  case Builtin::BI_exception_code: {
+    Scope *S = getCurScope();
+    while (S && !S->isSEHExceptScope())
----------------
This checking can run in template instantiations, but getCurScope() isn't 
meaningful there.

http://reviews.llvm.org/D5607

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



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

Reply via email to