<div dir="ltr">With this patch it's "after-scope" instead of return but still there: <a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/650/steps/check-clang%20asan/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/650/steps/check-clang%20asan/logs/stdio</a><br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 15, 2016 at 1:07 PM Alexey Bataev via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: abataev<br class="gmail_msg">
Date: Tue Nov 15 14:57:18 2016<br class="gmail_msg">
New Revision: 287025<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=287025&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=287025&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
[OPENMP] Fix stack use after delete, NFC.<br class="gmail_msg">
<br class="gmail_msg">
Fixed possible use of stack variable after deletion.<br class="gmail_msg">
<br class="gmail_msg">
Modified:<br class="gmail_msg">
    cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=287025&r1=287024&r2=287025&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=287025&r1=287024&r2=287025&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original)<br class="gmail_msg">
+++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Tue Nov 15 14:57:18 2016<br class="gmail_msg">
@@ -2237,6 +2237,7 @@ void CodeGenFunction::EmitSections(const<br class="gmail_msg">
   bool HasLastprivates = false;<br class="gmail_msg">
   auto &&CodeGen = [&S, Stmt, CS, &HasLastprivates](CodeGenFunction &CGF,<br class="gmail_msg">
                                                     PrePostActionTy &) {<br class="gmail_msg">
+    OMPCancelStackRAII CancelRegion(CGF);<br class="gmail_msg">
     auto &C = CGF.CGM.getContext();<br class="gmail_msg">
     auto KmpInt32Ty = C.getIntTypeForBitwidth(/*DestWidth=*/32, /*Signed=*/1);<br class="gmail_msg">
     // Emit helper vars inits.<br class="gmail_msg">
@@ -2332,11 +2333,11 @@ void CodeGenFunction::EmitSections(const<br class="gmail_msg">
                          [](CodeGenFunction &) {});<br class="gmail_msg">
     // Tell the runtime we are done.<br class="gmail_msg">
     SourceLocation ELoc = S.getLocEnd();<br class="gmail_msg">
-    auto &&CodeGen = [ELoc](CodeGenFunction &CGF) {<br class="gmail_msg">
+    auto &&FinalCodeGen = [ELoc](CodeGenFunction &CGF) {<br class="gmail_msg">
       CGF.CGM.getOpenMPRuntime().emitForStaticFinish(CGF, ELoc);<br class="gmail_msg">
     };<br class="gmail_msg">
-    CodeGen(CGF);<br class="gmail_msg">
-    CGF.OMPCancelStack.back().CodeGen = CodeGen;<br class="gmail_msg">
+    FinalCodeGen(CGF);<br class="gmail_msg">
+    CGF.OMPCancelStack.back().CodeGen = FinalCodeGen;<br class="gmail_msg">
     CGF.EmitOMPReductionClauseFinal(S);<br class="gmail_msg">
     // Emit post-update of the reduction variables if IsLastIter != 0.<br class="gmail_msg">
     emitPostUpdateForReductionClause(<br class="gmail_msg">
@@ -2374,7 +2375,6 @@ void CodeGenFunction::EmitSections(const<br class="gmail_msg">
 void CodeGenFunction::EmitOMPSectionsDirective(const OMPSectionsDirective &S) {<br class="gmail_msg">
   {<br class="gmail_msg">
     OMPLexicalScope Scope(*this, S, /*AsInlined=*/true);<br class="gmail_msg">
-    OMPCancelStackRAII CancelRegion(*this);<br class="gmail_msg">
     EmitSections(S);<br class="gmail_msg">
   }<br class="gmail_msg">
   // Emit an implicit barrier at the end.<br class="gmail_msg">
@@ -2483,7 +2483,6 @@ void CodeGenFunction::EmitOMPParallelSec<br class="gmail_msg">
   // Emit directive as a combined directive that consists of two implicit<br class="gmail_msg">
   // directives: 'parallel' with 'sections' directive.<br class="gmail_msg">
   auto &&CodeGen = [&S](CodeGenFunction &CGF, PrePostActionTy &) {<br class="gmail_msg">
-    OMPCancelStackRAII CancelRegion(CGF);<br class="gmail_msg">
     CGF.EmitSections(S);<br class="gmail_msg">
   };<br class="gmail_msg">
   emitCommonOMPParallelDirective(*this, S, OMPD_sections, CodeGen);<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
cfe-commits mailing list<br class="gmail_msg">
<a href="mailto:cfe-commits@lists.llvm.org" class="gmail_msg" target="_blank">cfe-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br class="gmail_msg">
</blockquote></div>