Alexey: you're the owner of openmp in Clang. Can you comment on what should be merged here?
On Tue, Jan 26, 2016 at 3:43 PM, Jack Howarth <howarth.mailing.li...@gmail.com> wrote: > Tested the attached patch which contains a back port of the net > changes from both r258307 and > > Author: abataev > Date: Fri Jan 22 02:56:50 2016 > New Revision: 258495 > > URL: http://llvm.org/viewvc/llvm-project?rev=258495&view=rev > Log: > [OPENMP] Generalize codegen for 'sections'-based directive. > If 'sections' directive has only one sub-section, the code for > 'single'-based directive was emitted. Removed this codegen, because it > causes crashes in different cases. > > Modified: > cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp > cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp > cfe/trunk/test/OpenMP/cancel_codegen.cpp > cfe/trunk/test/OpenMP/cancellation_point_codegen.cpp > cfe/trunk/test/OpenMP/parallel_sections_codegen.cpp > cfe/trunk/test/OpenMP/sections_codegen.cpp > cfe/trunk/test/OpenMP/sections_firstprivate_codegen.cpp > cfe/trunk/test/OpenMP/sections_lastprivate_codegen.cpp > cfe/trunk/test/OpenMP/sections_private_codegen.cpp > cfe/trunk/test/OpenMP/sections_reduction_codegen.cpp > > on x86_64-apple-darwin15 without regressions in the cfe or libomp test suites. > Jack > ps Also verified that no regressions occur in the OpenMP3.1_Validation > test suite. > > On Tue, Jan 26, 2016 at 2:23 PM, Hans Wennborg <h...@chromium.org> wrote: >> Did that fix land, and should it be merged to 3.8? >> >> On Thu, Jan 21, 2016 at 7:03 PM, Alexey Bataev <a.bat...@hotmail.com> wrote: >>> Later today I will post another fix, that will fix all 'sections' >>> related troubles, including this one. So I don't think it is necessary >>> to merge it >>> >>> Best regards, >>> Alexey Bataev >>> ============= >>> Software Engineer >>> Intel Compiler Team >>> >>> 22.01.2016 0:10, Hans Wennborg пишет: >>>> Jack suggested (https://llvm.org/bugs/show_bug.cgi?id=26059#c7) that >>>> this should be merged to 3.8. >>>> >>>> Alexey, you're the code owner here. OK for merging? If yes, do you >>>> want to go ahead and merge with utils/release/merge.sh? >>>> >>>> On Wed, Jan 20, 2016 at 4:29 AM, Alexey Bataev via cfe-commits >>>> <cfe-commits@lists.llvm.org> wrote: >>>>> Author: abataev >>>>> Date: Wed Jan 20 06:29:47 2016 >>>>> New Revision: 258307 >>>>> >>>>> URL: http://llvm.org/viewvc/llvm-project?rev=258307&view=rev >>>>> Log: >>>>> [OPENMP 4.0] Fix for codegen of 'cancel' directive within 'sections' >>>>> directive. >>>>> Allow to emit code for 'cancel' directive within 'sections' directive >>>>> with single sub-section. >>>>> >>>>> Modified: >>>>> cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp >>>>> cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp >>>>> cfe/trunk/test/OpenMP/cancel_codegen.cpp >>>>> >>>>> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=258307&r1=258306&r2=258307&view=diff >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original) >>>>> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Wed Jan 20 06:29:47 2016 >>>>> @@ -3685,8 +3685,6 @@ void CGOpenMPRuntime::emitCancelCall(Cod >>>>> // kmp_int32 cncl_kind); >>>>> if (auto *OMPRegionInfo = >>>>> dyn_cast_or_null<CGOpenMPRegionInfo>(CGF.CapturedStmtInfo)) { >>>>> - if (OMPRegionInfo->getDirectiveKind() == OMPD_single) >>>>> - return; >>>>> auto &&ThenGen = [this, Loc, CancelRegion, >>>>> OMPRegionInfo](CodeGenFunction &CGF) { >>>>> llvm::Value *Args[] = { >>>>> >>>>> Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=258307&r1=258306&r2=258307&view=diff >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original) >>>>> +++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Wed Jan 20 06:29:47 2016 >>>>> @@ -1786,7 +1786,11 @@ CodeGenFunction::EmitSections(const OMPE >>>>> CGF.EmitOMPPrivateClause(S, SingleScope); >>>>> (void)SingleScope.Privatize(); >>>>> >>>>> + auto Exit = CGF.getJumpDestInCurrentScope("omp.sections.exit"); >>>>> + CGF.BreakContinueStack.push_back(BreakContinue(Exit, Exit)); >>>>> CGF.EmitStmt(Stmt); >>>>> + CGF.EmitBlock(Exit.getBlock()); >>>>> + CGF.BreakContinueStack.pop_back(); >>>>> }; >>>>> CGM.getOpenMPRuntime().emitSingleRegion(*this, CodeGen, >>>>> S.getLocStart(), >>>>> llvm::None, llvm::None, >>>>> llvm::None, >>>>> @@ -2647,7 +2651,8 @@ CodeGenFunction::getOMPCancelDestination >>>>> if (Kind == OMPD_parallel || Kind == OMPD_task) >>>>> return ReturnBlock; >>>>> assert(Kind == OMPD_for || Kind == OMPD_section || Kind == >>>>> OMPD_sections || >>>>> - Kind == OMPD_parallel_sections || Kind == OMPD_parallel_for); >>>>> + Kind == OMPD_parallel_sections || Kind == OMPD_parallel_for || >>>>> + Kind == OMPD_single); >>>>> return BreakContinueStack.back().BreakBlock; >>>>> } >>>>> >>>>> >>>>> Modified: cfe/trunk/test/OpenMP/cancel_codegen.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/cancel_codegen.cpp?rev=258307&r1=258306&r2=258307&view=diff >>>>> ============================================================================== >>>>> --- cfe/trunk/test/OpenMP/cancel_codegen.cpp (original) >>>>> +++ cfe/trunk/test/OpenMP/cancel_codegen.cpp Wed Jan 20 06:29:47 2016 >>>>> @@ -20,7 +20,7 @@ int main (int argc, char **argv) { >>>>> #pragma omp cancel sections >>>>> } >>>>> // CHECK: call i32 @__kmpc_single( >>>>> -// CHECK-NOT: @__kmpc_cancel >>>>> +// CHECK: call i32 @__kmpc_cancel( >>>>> // CHECK: call void @__kmpc_end_single( >>>>> // CHECK: call void @__kmpc_barrier(%ident_t* >>>>> #pragma omp sections >>>>> @@ -126,7 +126,7 @@ for (int i = 0; i < argc; ++i) { >>>>> >>>>> // CHECK: define internal void @{{[^(]+}}(i32* {{[^,]+}}, i32* >>>>> {{[^,]+}}) >>>>> // CHECK: call i32 @__kmpc_single( >>>>> -// CHECK-NOT: @__kmpc_cancel >>>>> +// CHECK: call i32 @__kmpc_cancel( >>>>> // CHECK: call void @__kmpc_end_single( >>>>> // CHECK: ret void >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> cfe-commits mailing list >>>>> cfe-commits@lists.llvm.org >>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits