r236490 - Revert revision 236487: [OPENMP] Fixed incorrect work with cleanups, NFC.

Hal Finkel hfinkel at anl.gov
Tue May 5 14:41:01 PDT 2015


----- Original Message -----
> From: "Alexey Bataev" <a.bataev at hotmail.com>
> To: cfe-commits at cs.uiuc.edu
> Sent: Tuesday, May 5, 2015 3:48:39 AM
> Subject: r236490 - Revert revision 236487: [OPENMP] Fixed incorrect work with	cleanups, NFC.
> 
> Author: abataev
> Date: Tue May  5 03:48:39 2015
> New Revision: 236490
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=236490&view=rev
> Log:
> Revert revision 236487: [OPENMP] Fixed incorrect work with cleanups,
> NFC.

Why?

 -Hal

> 
> Modified:
>     cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
> 
> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=236490&r1=236489&r2=236490&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Tue May  5 03:48:39
> 2015
> @@ -1154,16 +1154,16 @@ llvm::Value *CGOpenMPRuntime::getCritica
>  }
>  
>  namespace {
> -template <size_t N> class CallEndCleanup : public
> EHScopeStack::Cleanup {
> +class CallEndCleanup : public EHScopeStack::Cleanup {
> +public:
> +  typedef ArrayRef<llvm::Value *> CleanupValuesTy;
> +private:
>    llvm::Value *Callee;
> -  llvm::Value *Args[N];
> +  llvm::SmallVector<llvm::Value *, 8> Args;
>  
>  public:
> -  CallEndCleanup(llvm::Value *Callee, ArrayRef<llvm::Value *>
> CleanupArgs)
> -      : Callee(Callee) {
> -    assert(CleanupArgs.size() == N);
> -    std::copy(CleanupArgs.begin(), CleanupArgs.end(),
> std::begin(Args));
> -  }
> +  CallEndCleanup(llvm::Value *Callee, CleanupValuesTy Args)
> +      : Callee(Callee), Args(Args.begin(), Args.end()) {}
>    void Emit(CodeGenFunction &CGF, Flags /*flags*/) override {
>      CGF.EmitRuntimeCall(Callee, Args);
>    }
> @@ -1184,7 +1184,7 @@ void CGOpenMPRuntime::emitCriticalRegion
>                             getCriticalRegionLock(CriticalName)};
>      CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_critical),
>      Args);
>      // Build a call to __kmpc_end_critical
> -
>    CGF.EHStack.pushCleanup<CallEndCleanup<std::extent<decltype(Args)>::value>>(
> +    CGF.EHStack.pushCleanup<CallEndCleanup>(
>          NormalAndEHCleanup,
>          createRuntimeFunction(OMPRTL__kmpc_end_critical),
>          llvm::makeArrayRef(Args));
>      emitInlinedDirective(CGF, CriticalOpGen);
> @@ -1222,7 +1222,7 @@ void CGOpenMPRuntime::emitMasterRegion(C
>        CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_master),
>        Args);
>    emitIfStmt(CGF, IsMaster, [&](CodeGenFunction &CGF) -> void {
>      CodeGenFunction::RunCleanupsScope Scope(CGF);
> -
>    CGF.EHStack.pushCleanup<CallEndCleanup<std::extent<decltype(Args)>::value>>(
> +    CGF.EHStack.pushCleanup<CallEndCleanup>(
>          NormalAndEHCleanup,
>          createRuntimeFunction(OMPRTL__kmpc_end_master),
>          llvm::makeArrayRef(Args));
>      MasterOpGen(CGF);
> @@ -1328,7 +1328,7 @@ void CGOpenMPRuntime::emitSingleRegion(C
>        CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_single),
>        Args);
>    emitIfStmt(CGF, IsSingle, [&](CodeGenFunction &CGF) -> void {
>      CodeGenFunction::RunCleanupsScope Scope(CGF);
> -
>    CGF.EHStack.pushCleanup<CallEndCleanup<std::extent<decltype(Args)>::value>>(
> +    CGF.EHStack.pushCleanup<CallEndCleanup>(
>          NormalAndEHCleanup,
>          createRuntimeFunction(OMPRTL__kmpc_end_single),
>          llvm::makeArrayRef(Args));
>      SingleOpGen(CGF);
> @@ -1391,7 +1391,7 @@ void CGOpenMPRuntime::emitOrderedRegion(
>      llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc),
>      getThreadID(CGF, Loc)};
>      CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_ordered),
>      Args);
>      // Build a call to __kmpc_end_ordered
> -
>    CGF.EHStack.pushCleanup<CallEndCleanup<std::extent<decltype(Args)>::value>>(
> +    CGF.EHStack.pushCleanup<CallEndCleanup>(
>          NormalAndEHCleanup,
>          createRuntimeFunction(OMPRTL__kmpc_end_ordered),
>          llvm::makeArrayRef(Args));
>      emitInlinedDirective(CGF, OrderedOpGen);
> @@ -1999,8 +1999,7 @@ void CGOpenMPRuntime::emitTaskCall(
>              createRuntimeFunction(OMPRTL__kmpc_omp_task_begin_if0),
>              TaskArgs);
>          // Build void __kmpc_omp_task_complete_if0(ident_t *,
>          kmp_int32 gtid,
>          // kmp_task_t *new_task);
> -        CGF.EHStack.pushCleanup<
> -            CallEndCleanup<std::extent<decltype(TaskArgs)>::value>>(
> +        CGF.EHStack.pushCleanup<CallEndCleanup>(
>              NormalAndEHCleanup,
>              createRuntimeFunction(OMPRTL__kmpc_omp_task_complete_if0),
>              llvm::makeArrayRef(TaskArgs));
> @@ -2192,12 +2191,11 @@ void CGOpenMPRuntime::emitReduction(Code
>          ThreadId,  // i32 <gtid>
>          Lock       // kmp_critical_name *&<lock>
>      };
> -    CGF.EHStack
> -
>        .pushCleanup<CallEndCleanup<std::extent<decltype(EndArgs)>::value>>(
> -            NormalAndEHCleanup,
> -            createRuntimeFunction(WithNowait ?
> OMPRTL__kmpc_end_reduce_nowait
> -                                             :
> OMPRTL__kmpc_end_reduce),
> -            llvm::makeArrayRef(EndArgs));
> +    CGF.EHStack.pushCleanup<CallEndCleanup>(
> +        NormalAndEHCleanup,
> +        createRuntimeFunction(WithNowait ?
> OMPRTL__kmpc_end_reduce_nowait
> +                                         : OMPRTL__kmpc_end_reduce),
> +        llvm::makeArrayRef(EndArgs));
>      for (auto *E : ReductionOps) {
>        CGF.EmitIgnoredExpr(E);
>      }
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the cfe-commits mailing list