ABataev added a comment.

Thinking more about this patch I think it is a right solution to override void 
`llvm::Value *emitParallelOrTeamsOutlinedFunction()` and `void emitTeamsCall()` 
for `CGOpenMPRuntimeNVPTX` class:

  llvm::Value *CGOpenMPRuntimeNVPTX::emitParallelOrTeamsOutlinedFunction() {
    llvm::Value *OutlinedFn = 
CGOpenMPRuntime::emitParallelOrTeamsOutlinedFunction();
    cast<llvm::Function>(OutlinedFn)->addFnAttr(llvm::Attribute::AlwaysInline);
    return OutlinedFn;
  }

  void CGOpenMPRuntimeNVPTX::emitTeamsCall() {
    if (!CGF.HaveInsertPoint())
      return;
  
    CodeGenFunction::RunCleanupsScope Scope(CGF);
    Address ZeroAddr =
          CGF.CreateTempAlloca(CGF.Int32Ty, CharUnits::fromQuantity(4),
                               /*Name*/ ".zero.addr");
    CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
    llvm::SmallVector<llvm::Value *, 16> OutlinedFnArgs;
    OutlinedFnArgs.push_back(ZeroAddr.getPointer());
    OutlinedFnArgs.push_back(ZeroAddr.getPointer());
    OutlinedFnArgs.append(CapturedVars.begin(), CapturedVars.end());
    CGF.EmitCallOrInvoke(OutlinedFn, OutlinedFnArgs);
  }

Also, please update patch to the latest revision


Repository:
  rL LLVM

http://reviews.llvm.org/D18286



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to