Hi Hans, I don't think we need to merge some of these to 6.0 branch, they are not bug fixes, just some new functionality
------------- Best regards, Alexey Bataev 16.01.2018 9:59, Hans Wennborg пишет: > Please file a merge request bug blocking PR35804 for what you'd like > merged (unless you already have). > > Thanks, > Hans > > On Mon, Jan 8, 2018 at 5:27 PM, Alexey Bataev via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> Will add some more tests later today >> ------------- >> Best regards, >> Alexey Bataev >> >> 08.01.2018 11:13, David Blaikie пишет: >> >> Rough guess: That seems like a lot of code changes for relatively little >> test changes - are all parts of this change tested? (Might well be - just >> lots of layers to plumb things through - but if there's lots of places that >> get locations and only a few of those are tested, maybe this could use more >> coverage?) >> >> On Thu, Jan 4, 2018 at 11:46 AM Alexey Bataev via cfe-commits >> <cfe-commits@lists.llvm.org> wrote: >>> Author: abataev >>> Date: Thu Jan 4 11:45:16 2018 >>> New Revision: 321816 >>> >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D321816%26view%3Drev&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=BadegqUC2t2TewTv8LJWOrOGFv1xmYT4dQd0e5hMPKw%3D&reserved=0 >>> Log: >>> [OPENMP] Add debug info for generated functions. >>> >>> Most of the generated functions for the OpenMP were generated with >>> disabled debug info. Patch fixes this for better user experience. >>> >>> Modified: >>> cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp >>> cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h >>> cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp >>> cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h >>> cfe/trunk/test/OpenMP/target_parallel_debug_codegen.cpp >>> >>> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fcfe%2Ftrunk%2Flib%2FCodeGen%2FCGOpenMPRuntime.cpp%3Frev%3D321816%26r1%3D321815%26r2%3D321816%26view%3Ddiff&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=wKocNVvjbyMUCScwauKF8aG9EDT%2BMQioljf29p9GVYQ%3D&reserved=0 >>> >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Thu Jan 4 11:45:16 2018 >>> @@ -1216,7 +1216,8 @@ emitCombinerOrInitializer(CodeGenModule >>> CodeGenFunction CGF(CGM); >>> // Map "T omp_in;" variable to "*omp_in_parm" value in all expressions. >>> // Map "T omp_out;" variable to "*omp_out_parm" value in all >>> expressions. >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args, >>> In->getLocation(), >>> + Out->getLocation()); >>> CodeGenFunction::OMPPrivateScope Scope(CGF); >>> Address AddrIn = CGF.GetAddrOfLocalVar(&OmpInParm); >>> Scope.addPrivate(In, [&CGF, AddrIn, PtrTy]() -> Address { >>> @@ -2383,7 +2384,8 @@ llvm::Function *CGOpenMPRuntime::emitThr >>> // threadprivate copy of the variable VD >>> CodeGenFunction CtorCGF(CGM); >>> FunctionArgList Args; >>> - ImplicitParamDecl Dst(CGM.getContext(), CGM.getContext().VoidPtrTy, >>> + ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc, >>> + /*Id=*/nullptr, CGM.getContext().VoidPtrTy, >>> ImplicitParamDecl::Other); >>> Args.push_back(&Dst); >>> >>> @@ -2393,13 +2395,13 @@ llvm::Function *CGOpenMPRuntime::emitThr >>> auto Fn = CGM.CreateGlobalInitOrDestructFunction( >>> FTy, ".__kmpc_global_ctor_.", FI, Loc); >>> CtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidPtrTy, Fn, >>> FI, >>> - Args, SourceLocation()); >>> + Args, Loc, Loc); >>> auto ArgVal = CtorCGF.EmitLoadOfScalar( >>> CtorCGF.GetAddrOfLocalVar(&Dst), /*Volatile=*/false, >>> CGM.getContext().VoidPtrTy, Dst.getLocation()); >>> Address Arg = Address(ArgVal, VDAddr.getAlignment()); >>> - Arg = CtorCGF.Builder.CreateElementBitCast(Arg, >>> - >>> CtorCGF.ConvertTypeForMem(ASTTy)); >>> + Arg = CtorCGF.Builder.CreateElementBitCast( >>> + Arg, CtorCGF.ConvertTypeForMem(ASTTy)); >>> CtorCGF.EmitAnyExprToMem(Init, Arg, >>> Init->getType().getQualifiers(), >>> /*IsInitializer=*/true); >>> ArgVal = CtorCGF.EmitLoadOfScalar( >>> @@ -2414,7 +2416,8 @@ llvm::Function *CGOpenMPRuntime::emitThr >>> // of the variable VD >>> CodeGenFunction DtorCGF(CGM); >>> FunctionArgList Args; >>> - ImplicitParamDecl Dst(CGM.getContext(), CGM.getContext().VoidPtrTy, >>> + ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc, >>> + /*Id=*/nullptr, CGM.getContext().VoidPtrTy, >>> ImplicitParamDecl::Other); >>> Args.push_back(&Dst); >>> >>> @@ -2425,7 +2428,7 @@ llvm::Function *CGOpenMPRuntime::emitThr >>> FTy, ".__kmpc_global_dtor_.", FI, Loc); >>> auto NL = ApplyDebugLocation::CreateEmpty(DtorCGF); >>> DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, >>> FI, Args, >>> - SourceLocation()); >>> + Loc, Loc); >>> // Create a scope with an artificial location for the body of this >>> function. >>> auto AL = ApplyDebugLocation::CreateArtificial(DtorCGF); >>> auto ArgVal = DtorCGF.EmitLoadOfScalar( >>> @@ -2469,7 +2472,7 @@ llvm::Function *CGOpenMPRuntime::emitThr >>> FunctionArgList ArgList; >>> InitCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, >>> InitFunction, >>> CGM.getTypes().arrangeNullaryFunction(), >>> ArgList, >>> - Loc); >>> + Loc, Loc); >>> emitThreadPrivateVarInit(InitCGF, VDAddr, Ctor, CopyCtor, Dtor, >>> Loc); >>> InitCGF.FinishFunction(); >>> return InitFunction; >>> @@ -2783,12 +2786,15 @@ static Address emitAddrOfVarFromArray(Co >>> static llvm::Value *emitCopyprivateCopyFunction( >>> CodeGenModule &CGM, llvm::Type *ArgsType, >>> ArrayRef<const Expr *> CopyprivateVars, ArrayRef<const Expr *> >>> DestExprs, >>> - ArrayRef<const Expr *> SrcExprs, ArrayRef<const Expr *> >>> AssignmentOps) { >>> + ArrayRef<const Expr *> SrcExprs, ArrayRef<const Expr *> >>> AssignmentOps, >>> + SourceLocation Loc) { >>> auto &C = CGM.getContext(); >>> // void copy_func(void *LHSArg, void *RHSArg); >>> FunctionArgList Args; >>> - ImplicitParamDecl LHSArg(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> - ImplicitParamDecl RHSArg(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl LHSArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> + ImplicitParamDecl RHSArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> Args.push_back(&LHSArg); >>> Args.push_back(&RHSArg); >>> auto &CGFI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, >>> Args); >>> @@ -2797,7 +2803,7 @@ static llvm::Value *emitCopyprivateCopyF >>> ".omp.copyprivate.copy_func", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> // Dest = (void*[n])(LHSArg); >>> // Src = (void*[n])(RHSArg); >>> Address LHS(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( >>> @@ -2888,7 +2894,7 @@ void CGOpenMPRuntime::emitSingleRegion(C >>> // threads in the corresponding parallel region. >>> auto *CpyFn = emitCopyprivateCopyFunction( >>> CGM, CGF.ConvertTypeForMem(CopyprivateArrayTy)->getPointerTo(), >>> - CopyprivateVars, SrcExprs, DstExprs, AssignmentOps); >>> + CopyprivateVars, SrcExprs, DstExprs, AssignmentOps, Loc); >>> auto *BufSize = CGF.getTypeSize(CopyprivateArrayTy); >>> Address CL = >>> CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(CopyprivateList, >>> @@ -3399,11 +3405,13 @@ createOffloadingBinaryDescriptorFunction >>> Args.push_back(&DummyPtr); >>> >>> CodeGenFunction CGF(CGM); >>> + // Disable debug info for global (de-)initializer because they are not >>> part of >>> + // some particular construct. >>> + CGF.disableDebugInfo(); >>> auto &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, >>> Args); >>> auto FTy = CGM.getTypes().GetFunctionType(FI); >>> - auto *Fn = >>> - CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI, >>> SourceLocation()); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FI, Args, >>> SourceLocation()); >>> + auto *Fn = CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FI, Args); >>> Codegen(CGF); >>> CGF.FinishFunction(); >>> return Fn; >>> @@ -3411,7 +3419,6 @@ createOffloadingBinaryDescriptorFunction >>> >>> llvm::Function * >>> CGOpenMPRuntime::createOffloadingBinaryDescriptorRegistration() { >>> - >>> // If we don't have entries or if we are emitting code for the device, >>> we >>> // don't need to do anything. >>> if (CGM.getLangOpts().OpenMPIsDevice || >>> OffloadEntriesInfoManager.empty()) >>> @@ -3945,7 +3952,8 @@ emitProxyTaskFunction(CodeGenModule &CGM >>> ".omp_task_entry.", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, TaskEntry, >>> TaskEntryFnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.StartFunction(GlobalDecl(), KmpInt32Ty, TaskEntry, TaskEntryFnInfo, >>> Args); >>> + CGF.StartFunction(GlobalDecl(), KmpInt32Ty, TaskEntry, TaskEntryFnInfo, >>> Args, >>> + Loc, Loc); >>> >>> // TaskFunction(gtid, tt->task_data.part_id, &tt->privates, >>> task_privates_map, >>> // tt, >>> @@ -4045,9 +4053,8 @@ static llvm::Value *emitDestructorsFunct >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, DestructorFn, >>> DestructorFnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> CGF.StartFunction(GlobalDecl(), KmpInt32Ty, DestructorFn, >>> DestructorFnInfo, >>> - Args); >>> + Args, Loc, Loc); >>> >>> LValue Base = CGF.EmitLoadOfPointerLValue( >>> CGF.GetAddrOfLocalVar(&TaskTypeArg), >>> @@ -4139,9 +4146,8 @@ emitTaskPrivateMappingFunction(CodeGenMo >>> TaskPrivatesMap->removeFnAttr(llvm::Attribute::OptimizeNone); >>> TaskPrivatesMap->addFnAttr(llvm::Attribute::AlwaysInline); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> CGF.StartFunction(GlobalDecl(), C.VoidTy, TaskPrivatesMap, >>> - TaskPrivatesMapFnInfo, Args); >>> + TaskPrivatesMapFnInfo, Args, Loc, Loc); >>> >>> // *privi = &.privates.privi; >>> LValue Base = CGF.EmitLoadOfPointerLValue( >>> @@ -4322,8 +4328,8 @@ emitTaskDupFunction(CodeGenModule &CGM, >>> ".omp_task_dup.", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, TaskDup, >>> TaskDupFnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, TaskDup, TaskDupFnInfo, >>> Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, TaskDup, TaskDupFnInfo, Args, >>> Loc, >>> + Loc); >>> >>> LValue TDBase = CGF.EmitLoadOfPointerLValue( >>> CGF.GetAddrOfLocalVar(&DstArg), >>> @@ -4943,15 +4949,17 @@ static void emitReductionCombiner(CodeGe >>> } >>> >>> llvm::Value *CGOpenMPRuntime::emitReductionFunction( >>> - CodeGenModule &CGM, llvm::Type *ArgsType, ArrayRef<const Expr *> >>> Privates, >>> - ArrayRef<const Expr *> LHSExprs, ArrayRef<const Expr *> RHSExprs, >>> - ArrayRef<const Expr *> ReductionOps) { >>> + CodeGenModule &CGM, SourceLocation Loc, llvm::Type *ArgsType, >>> + ArrayRef<const Expr *> Privates, ArrayRef<const Expr *> LHSExprs, >>> + ArrayRef<const Expr *> RHSExprs, ArrayRef<const Expr *> ReductionOps) >>> { >>> auto &C = CGM.getContext(); >>> >>> // void reduction_func(void *LHSArg, void *RHSArg); >>> FunctionArgList Args; >>> - ImplicitParamDecl LHSArg(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> - ImplicitParamDecl RHSArg(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl LHSArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> + ImplicitParamDecl RHSArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> Args.push_back(&LHSArg); >>> Args.push_back(&RHSArg); >>> auto &CGFI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, >>> Args); >>> @@ -4960,7 +4968,7 @@ llvm::Value *CGOpenMPRuntime::emitReduct >>> ".omp.reduction.reduction_func", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> >>> // Dst = (void*[n])(LHSArg); >>> // Src = (void*[n])(RHSArg); >>> @@ -5149,8 +5157,8 @@ void CGOpenMPRuntime::emitReduction(Code >>> >>> // 2. Emit reduce_func(). >>> auto *ReductionFn = emitReductionFunction( >>> - CGM, CGF.ConvertTypeForMem(ReductionArrayTy)->getPointerTo(), >>> Privates, >>> - LHSExprs, RHSExprs, ReductionOps); >>> + CGM, Loc, CGF.ConvertTypeForMem(ReductionArrayTy)->getPointerTo(), >>> + Privates, LHSExprs, RHSExprs, ReductionOps); >>> >>> // 3. Create static kmp_critical_name lock = { 0 }; >>> auto *Lock = getCriticalRegionLock(".reduction"); >>> @@ -5365,7 +5373,8 @@ static llvm::Value *emitReduceInitFuncti >>> ReductionCodeGen &RCG, >>> unsigned N) { >>> auto &C = CGM.getContext(); >>> FunctionArgList Args; >>> - ImplicitParamDecl Param(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl Param(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> Args.emplace_back(&Param); >>> auto &FnInfo = >>> CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args); >>> @@ -5374,8 +5383,7 @@ static llvm::Value *emitReduceInitFuncti >>> ".red_init.", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, FnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args, Loc, Loc); >>> Address PrivateAddr = CGF.EmitLoadOfPointer( >>> CGF.GetAddrOfLocalVar(&Param), >>> C.getPointerType(C.VoidPtrTy).castAs<PointerType>()); >>> @@ -5435,8 +5443,10 @@ static llvm::Value *emitReduceCombFuncti >>> auto *LHSVD = cast<VarDecl>(cast<DeclRefExpr>(LHS)->getDecl()); >>> auto *RHSVD = cast<VarDecl>(cast<DeclRefExpr>(RHS)->getDecl()); >>> FunctionArgList Args; >>> - ImplicitParamDecl ParamInOut(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> - ImplicitParamDecl ParamIn(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl ParamInOut(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl ParamIn(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> Args.emplace_back(&ParamInOut); >>> Args.emplace_back(&ParamIn); >>> auto &FnInfo = >>> @@ -5446,8 +5456,7 @@ static llvm::Value *emitReduceCombFuncti >>> ".red_comb.", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, FnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args, Loc, Loc); >>> llvm::Value *Size = nullptr; >>> // If the size of the reduction item is non-constant, load it from >>> global >>> // threadprivate variable. >>> @@ -5506,7 +5515,8 @@ static llvm::Value *emitReduceFiniFuncti >>> return nullptr; >>> auto &C = CGM.getContext(); >>> FunctionArgList Args; >>> - ImplicitParamDecl Param(C, C.VoidPtrTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl Param(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.VoidPtrTy, >>> + ImplicitParamDecl::Other); >>> Args.emplace_back(&Param); >>> auto &FnInfo = >>> CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args); >>> @@ -5515,8 +5525,7 @@ static llvm::Value *emitReduceFiniFuncti >>> ".red_fini.", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, FnInfo); >>> CodeGenFunction CGF(CGM); >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args, Loc, Loc); >>> Address PrivateAddr = CGF.EmitLoadOfPointer( >>> CGF.GetAddrOfLocalVar(&Param), >>> C.getPointerType(C.VoidPtrTy).castAs<PointerType>()); >>> >>> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fcfe%2Ftrunk%2Flib%2FCodeGen%2FCGOpenMPRuntime.h%3Frev%3D321816%26r1%3D321815%26r2%3D321816%26view%3Ddiff&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=6MZ%2B79J72mHiG7r4khg6ChDTSZoiJsBoZshwXrDFm4k%3D&reserved=0 >>> >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h (original) >>> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.h Thu Jan 4 11:45:16 2018 >>> @@ -1048,7 +1048,8 @@ public: >>> /// \param RHSExprs List of RHS in \a ReductionOps reduction >>> operations. >>> /// \param ReductionOps List of reduction operations in form 'LHS binop >>> RHS' >>> /// or 'operator binop(LHS, RHS)'. >>> - llvm::Value *emitReductionFunction(CodeGenModule &CGM, llvm::Type >>> *ArgsType, >>> + llvm::Value *emitReductionFunction(CodeGenModule &CGM, SourceLocation >>> Loc, >>> + llvm::Type *ArgsType, >>> ArrayRef<const Expr *> Privates, >>> ArrayRef<const Expr *> LHSExprs, >>> ArrayRef<const Expr *> RHSExprs, >>> >>> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fcfe%2Ftrunk%2Flib%2FCodeGen%2FCGOpenMPRuntimeNVPTX.cpp%3Frev%3D321816%26r1%3D321815%26r2%3D321816%26view%3Ddiff&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=GBl1v7ViUmRhtT%2FXSwdqqTLyQr9JPxxiZmIjax8H9aE%3D&reserved=0 >>> >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp Thu Jan 4 11:45:16 >>> 2018 >>> @@ -250,8 +250,8 @@ static llvm::Value *getMasterThreadID(Co >>> } >>> >>> CGOpenMPRuntimeNVPTX::WorkerFunctionState::WorkerFunctionState( >>> - CodeGenModule &CGM) >>> - : WorkerFn(nullptr), CGFI(nullptr) { >>> + CodeGenModule &CGM, SourceLocation Loc) >>> + : WorkerFn(nullptr), CGFI(nullptr), Loc(Loc) { >>> createWorkerFunction(CGM); >>> } >>> >>> @@ -297,28 +297,28 @@ void CGOpenMPRuntimeNVPTX::emitGenericKe >>> ExecutionModeRAII ModeRAII(CurrentExecutionMode, >>> >>> CGOpenMPRuntimeNVPTX::ExecutionMode::Generic); >>> EntryFunctionState EST; >>> - WorkerFunctionState WST(CGM); >>> + WorkerFunctionState WST(CGM, D.getLocStart()); >>> Work.clear(); >>> WrapperFunctionsMap.clear(); >>> >>> // Emit target region as a standalone region. >>> class NVPTXPrePostActionTy : public PrePostActionTy { >>> - CGOpenMPRuntimeNVPTX &RT; >>> CGOpenMPRuntimeNVPTX::EntryFunctionState &EST; >>> CGOpenMPRuntimeNVPTX::WorkerFunctionState &WST; >>> >>> public: >>> - NVPTXPrePostActionTy(CGOpenMPRuntimeNVPTX &RT, >>> - CGOpenMPRuntimeNVPTX::EntryFunctionState &EST, >>> + NVPTXPrePostActionTy(CGOpenMPRuntimeNVPTX::EntryFunctionState &EST, >>> CGOpenMPRuntimeNVPTX::WorkerFunctionState &WST) >>> - : RT(RT), EST(EST), WST(WST) {} >>> + : EST(EST), WST(WST) {} >>> void Enter(CodeGenFunction &CGF) override { >>> - RT.emitGenericEntryHeader(CGF, EST, WST); >>> + static_cast<CGOpenMPRuntimeNVPTX &>(CGF.CGM.getOpenMPRuntime()) >>> + .emitGenericEntryHeader(CGF, EST, WST); >>> } >>> void Exit(CodeGenFunction &CGF) override { >>> - RT.emitGenericEntryFooter(CGF, EST); >>> + static_cast<CGOpenMPRuntimeNVPTX &>(CGF.CGM.getOpenMPRuntime()) >>> + .emitGenericEntryFooter(CGF, EST); >>> } >>> - } Action(*this, EST, WST); >>> + } Action(EST, WST); >>> CodeGen.setAction(Action); >>> emitTargetOutlinedFunctionHelper(D, ParentName, OutlinedFn, >>> OutlinedFnID, >>> IsOffloadEntry, CodeGen); >>> @@ -347,7 +347,7 @@ void CGOpenMPRuntimeNVPTX::emitGenericEn >>> Bld.CreateCondBr(IsWorker, WorkerBB, MasterCheckBB); >>> >>> CGF.EmitBlock(WorkerBB); >>> - emitCall(CGF, WST.WorkerFn); >>> + emitOutlinedFunctionCall(CGF, WST.Loc, WST.WorkerFn); >>> CGF.EmitBranch(EST.ExitBB); >>> >>> CGF.EmitBlock(MasterCheckBB); >>> @@ -479,8 +479,8 @@ void CGOpenMPRuntimeNVPTX::emitWorkerFun >>> ASTContext &Ctx = CGM.getContext(); >>> >>> CodeGenFunction CGF(CGM, /*suppressNewContext=*/true); >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), Ctx.VoidTy, WST.WorkerFn, *WST.CGFI, >>> {}); >>> + CGF.StartFunction(GlobalDecl(), Ctx.VoidTy, WST.WorkerFn, *WST.CGFI, >>> {}, >>> + WST.Loc, WST.Loc); >>> emitWorkerLoop(CGF, WST); >>> CGF.FinishFunction(); >>> } >>> @@ -571,8 +571,9 @@ void CGOpenMPRuntimeNVPTX::emitWorkerLoo >>> Address Capture = CGF.EmitLoadOfPointer(SharedArgs, >>> Ctx.getPointerType( >>> Ctx.getPointerType(Ctx.VoidPtrTy)).castAs<PointerType>()); >>> - emitCall(CGF, W, {Bld.getInt16(/*ParallelLevel=*/0), >>> - getMasterThreadID(CGF), Capture.getPointer()}); >>> + emitOutlinedFunctionCall(CGF, WST.Loc, W, >>> + {Bld.getInt16(/*ParallelLevel=*/0), >>> + getMasterThreadID(CGF), >>> Capture.getPointer()}); >>> >>> // Go to end of parallel region. >>> CGF.EmitBranch(TerminateBB); >>> @@ -1319,27 +1320,31 @@ static void emitReductionListCopy( >>> /// local = local @ remote >>> /// else >>> /// local = remote >>> -static llvm::Value * >>> -emitReduceScratchpadFunction(CodeGenModule &CGM, >>> - ArrayRef<const Expr *> Privates, >>> - QualType ReductionArrayTy, llvm::Value >>> *ReduceFn) { >>> +static llvm::Value *emitReduceScratchpadFunction( >>> + CodeGenModule &CGM, ArrayRef<const Expr *> Privates, >>> + QualType ReductionArrayTy, llvm::Value *ReduceFn, SourceLocation Loc) >>> { >>> auto &C = CGM.getContext(); >>> auto Int32Ty = C.getIntTypeForBitwidth(32, /* Signed */ true); >>> >>> // Destination of the copy. >>> - ImplicitParamDecl ReduceListArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ReduceListArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // Base address of the scratchpad array, with each element storing a >>> // Reduce list per team. >>> - ImplicitParamDecl ScratchPadArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ScratchPadArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // A source index into the scratchpad array. >>> - ImplicitParamDecl IndexArg(C, Int32Ty, ImplicitParamDecl::Other); >>> + ImplicitParamDecl IndexArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> Int32Ty, >>> + ImplicitParamDecl::Other); >>> // Row width of an element in the scratchpad array, typically >>> // the number of teams. >>> - ImplicitParamDecl WidthArg(C, Int32Ty, ImplicitParamDecl::Other); >>> + ImplicitParamDecl WidthArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> Int32Ty, >>> + ImplicitParamDecl::Other); >>> // If should_reduce == 1, then it's load AND reduce, >>> // If should_reduce == 0 (or otherwise), then it only loads (+ copy). >>> // The latter case is used for initialization. >>> - ImplicitParamDecl ShouldReduceArg(C, Int32Ty, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ShouldReduceArg(C, /*DC=*/nullptr, Loc, >>> /*Id=*/nullptr, >>> + Int32Ty, ImplicitParamDecl::Other); >>> >>> FunctionArgList Args; >>> Args.push_back(&ReduceListArg); >>> @@ -1354,10 +1359,7 @@ emitReduceScratchpadFunction(CodeGenModu >>> "_omp_reduction_load_and_reduce", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*DC=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - // We don't need debug information in this function as nothing here >>> refers to >>> - // user code. >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> >>> auto &Bld = CGF.Builder; >>> >>> @@ -1421,7 +1423,8 @@ emitReduceScratchpadFunction(CodeGenModu >>> ReduceListAddr.getPointer(), CGF.VoidPtrTy); >>> llvm::Value *RemoteDataPtr = Bld.CreatePointerBitCastOrAddrSpaceCast( >>> RemoteReduceList.getPointer(), CGF.VoidPtrTy); >>> - CGF.EmitCallOrInvoke(ReduceFn, {LocalDataPtr, RemoteDataPtr}); >>> + CGM.getOpenMPRuntime().emitOutlinedFunctionCall( >>> + CGF, Loc, ReduceFn, {LocalDataPtr, RemoteDataPtr}); >>> Bld.CreateBr(MergeBB); >>> >>> CGF.EmitBlock(ElseBB); >>> @@ -1445,22 +1448,27 @@ emitReduceScratchpadFunction(CodeGenModu >>> /// >>> static llvm::Value *emitCopyToScratchpad(CodeGenModule &CGM, >>> ArrayRef<const Expr *> Privates, >>> - QualType ReductionArrayTy) { >>> + QualType ReductionArrayTy, >>> + SourceLocation Loc) { >>> >>> auto &C = CGM.getContext(); >>> auto Int32Ty = C.getIntTypeForBitwidth(32, /* Signed */ true); >>> >>> // Source of the copy. >>> - ImplicitParamDecl ReduceListArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ReduceListArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // Base address of the scratchpad array, with each element storing a >>> // Reduce list per team. >>> - ImplicitParamDecl ScratchPadArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ScratchPadArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // A destination index into the scratchpad array, typically the team >>> // identifier. >>> - ImplicitParamDecl IndexArg(C, Int32Ty, ImplicitParamDecl::Other); >>> + ImplicitParamDecl IndexArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> Int32Ty, >>> + ImplicitParamDecl::Other); >>> // Row width of an element in the scratchpad array, typically >>> // the number of teams. >>> - ImplicitParamDecl WidthArg(C, Int32Ty, ImplicitParamDecl::Other); >>> + ImplicitParamDecl WidthArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> Int32Ty, >>> + ImplicitParamDecl::Other); >>> >>> FunctionArgList Args; >>> Args.push_back(&ReduceListArg); >>> @@ -1474,10 +1482,7 @@ static llvm::Value *emitCopyToScratchpad >>> "_omp_reduction_copy_to_scratchpad", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*DC=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - // We don't need debug information in this function as nothing here >>> refers to >>> - // user code. >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> >>> auto &Bld = CGF.Builder; >>> >>> @@ -1534,17 +1539,19 @@ static llvm::Value *emitCopyToScratchpad >>> /// sync >>> static llvm::Value *emitInterWarpCopyFunction(CodeGenModule &CGM, >>> ArrayRef<const Expr *> >>> Privates, >>> - QualType ReductionArrayTy) >>> { >>> + QualType ReductionArrayTy, >>> + SourceLocation Loc) { >>> auto &C = CGM.getContext(); >>> auto &M = CGM.getModule(); >>> >>> // ReduceList: thread local Reduce list. >>> // At the stage of the computation when this function is called, >>> partially >>> // aggregated values reside in the first lane of every active warp. >>> - ImplicitParamDecl ReduceListArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ReduceListArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // NumWarps: number of warps active in the parallel region. This could >>> // be smaller than 32 (max warps in a CTA) for partial block reduction. >>> - ImplicitParamDecl NumWarpsArg(C, >>> + ImplicitParamDecl NumWarpsArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.getIntTypeForBitwidth(32, /* Signed */ >>> true), >>> ImplicitParamDecl::Other); >>> FunctionArgList Args; >>> @@ -1557,10 +1564,7 @@ static llvm::Value *emitInterWarpCopyFun >>> "_omp_reduction_inter_warp_copy_func", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*DC=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - // We don't need debug information in this function as nothing here >>> refers to >>> - // user code. >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> >>> auto &Bld = CGF.Builder; >>> >>> @@ -1781,21 +1785,23 @@ static llvm::Value *emitInterWarpCopyFun >>> /// (2k+1)th thread is ignored in the value aggregation. Therefore >>> /// we copy the Reduce list from the (2k+1)th lane to (k+1)th lane so >>> /// that the contiguity assumption still holds. >>> -static llvm::Value * >>> -emitShuffleAndReduceFunction(CodeGenModule &CGM, >>> - ArrayRef<const Expr *> Privates, >>> - QualType ReductionArrayTy, llvm::Value >>> *ReduceFn) { >>> +static llvm::Value *emitShuffleAndReduceFunction( >>> + CodeGenModule &CGM, ArrayRef<const Expr *> Privates, >>> + QualType ReductionArrayTy, llvm::Value *ReduceFn, SourceLocation Loc) >>> { >>> auto &C = CGM.getContext(); >>> >>> // Thread local Reduce list used to host the values of data to be >>> reduced. >>> - ImplicitParamDecl ReduceListArg(C, C.VoidPtrTy, >>> ImplicitParamDecl::Other); >>> + ImplicitParamDecl ReduceListArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.VoidPtrTy, ImplicitParamDecl::Other); >>> // Current lane id; could be logical. >>> - ImplicitParamDecl LaneIDArg(C, C.ShortTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl LaneIDArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> C.ShortTy, >>> + ImplicitParamDecl::Other); >>> // Offset of the remote source lane relative to the current lane. >>> - ImplicitParamDecl RemoteLaneOffsetArg(C, C.ShortTy, >>> - ImplicitParamDecl::Other); >>> + ImplicitParamDecl RemoteLaneOffsetArg(C, /*DC=*/nullptr, Loc, >>> /*Id=*/nullptr, >>> + C.ShortTy, >>> ImplicitParamDecl::Other); >>> // Algorithm version. This is expected to be known at compile time. >>> - ImplicitParamDecl AlgoVerArg(C, C.ShortTy, ImplicitParamDecl::Other); >>> + ImplicitParamDecl AlgoVerArg(C, /*DC=*/nullptr, Loc, /*Id=*/nullptr, >>> + C.ShortTy, ImplicitParamDecl::Other); >>> FunctionArgList Args; >>> Args.push_back(&ReduceListArg); >>> Args.push_back(&LaneIDArg); >>> @@ -1808,10 +1814,7 @@ emitShuffleAndReduceFunction(CodeGenModu >>> "_omp_reduction_shuffle_and_reduce_func", &CGM.getModule()); >>> CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, CGFI); >>> CodeGenFunction CGF(CGM); >>> - // We don't need debug information in this function as nothing here >>> refers to >>> - // user code. >>> - CGF.disableDebugInfo(); >>> - CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); >>> + CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args, Loc, Loc); >>> >>> auto &Bld = CGF.Builder; >>> >>> @@ -1898,7 +1901,8 @@ emitShuffleAndReduceFunction(CodeGenModu >>> LocalReduceList.getPointer(), CGF.VoidPtrTy); >>> llvm::Value *RemoteReduceListPtr = >>> Bld.CreatePointerBitCastOrAddrSpaceCast( >>> RemoteReduceList.getPointer(), CGF.VoidPtrTy); >>> - CGF.EmitCallOrInvoke(ReduceFn, {LocalReduceListPtr, >>> RemoteReduceListPtr}); >>> + CGM.getOpenMPRuntime().emitOutlinedFunctionCall( >>> + CGF, Loc, ReduceFn, {LocalReduceListPtr, RemoteReduceListPtr}); >>> Bld.CreateBr(MergeBB); >>> >>> CGF.EmitBlock(ElseBB); >>> @@ -2228,8 +2232,8 @@ void CGOpenMPRuntimeNVPTX::emitReduction >>> >>> // 2. Emit reduce_func(). >>> auto *ReductionFn = emitReductionFunction( >>> - CGM, CGF.ConvertTypeForMem(ReductionArrayTy)->getPointerTo(), >>> Privates, >>> - LHSExprs, RHSExprs, ReductionOps); >>> + CGM, Loc, CGF.ConvertTypeForMem(ReductionArrayTy)->getPointerTo(), >>> + Privates, LHSExprs, RHSExprs, ReductionOps); >>> >>> // 4. Build res = __kmpc_reduce{_nowait}(<gtid>, <n>, sizeof(RedList), >>> // RedList, shuffle_reduce_func, interwarp_copy_func); >>> @@ -2239,9 +2243,9 @@ void CGOpenMPRuntimeNVPTX::emitReduction >>> ReductionList.getPointer(), CGF.VoidPtrTy); >>> >>> auto *ShuffleAndReduceFn = emitShuffleAndReduceFunction( >>> - CGM, Privates, ReductionArrayTy, ReductionFn); >>> + CGM, Privates, ReductionArrayTy, ReductionFn, Loc); >>> auto *InterWarpCopyFn = >>> - emitInterWarpCopyFunction(CGM, Privates, ReductionArrayTy); >>> + emitInterWarpCopyFunction(CGM, Privates, ReductionArrayTy, Loc); >>> >>> llvm::Value *Res = nullptr; >>> if (ParallelReduction) { >>> @@ -2259,9 +2263,9 @@ void CGOpenMPRuntimeNVPTX::emitReduction >>> >>> if (TeamsReduction) { >>> auto *ScratchPadCopyFn = >>> - emitCopyToScratchpad(CGM, Privates, ReductionArrayTy); >>> + emitCopyToScratchpad(CGM, Privates, ReductionArrayTy, Loc); >>> auto *LoadAndReduceFn = emitReduceScratchpadFunction( >>> - CGM, Privates, ReductionArrayTy, ReductionFn); >>> + CGM, Privates, ReductionArrayTy, ReductionFn, Loc); >>> >>> llvm::Value *Args[] = {ThreadId, >>> CGF.Builder.getInt32(RHSExprs.size()), >>> @@ -2422,10 +2426,15 @@ llvm::Function *CGOpenMPRuntimeNVPTX::cr >>> Ctx.getIntTypeForBitwidth(/*DestWidth=*/32, /*Signed=*/false); >>> QualType Int32PtrQTy = Ctx.getPointerType(Int32QTy); >>> QualType VoidPtrPtrQTy = Ctx.getPointerType(Ctx.VoidPtrTy); >>> - ImplicitParamDecl ParallelLevelArg(Ctx, Int16QTy, >>> ImplicitParamDecl::Other); >>> - ImplicitParamDecl WrapperArg(Ctx, Int32QTy, ImplicitParamDecl::Other); >>> - ImplicitParamDecl SharedArgsList(Ctx, VoidPtrPtrQTy, >>> - ImplicitParamDecl::Other); >>> + ImplicitParamDecl ParallelLevelArg(Ctx, /*DC=*/nullptr, >>> D.getLocStart(), >>> + /*Id=*/nullptr, Int16QTy, >>> + ImplicitParamDecl::Other); >>> + ImplicitParamDecl WrapperArg(Ctx, /*DC=*/nullptr, D.getLocStart(), >>> + /*Id=*/nullptr, Int32QTy, >>> + ImplicitParamDecl::Other); >>> + ImplicitParamDecl SharedArgsList(Ctx, /*DC=*/nullptr, D.getLocStart(), >>> + /*Id=*/nullptr, VoidPtrPtrQTy, >>> + ImplicitParamDecl::Other); >>> WrapperArgs.emplace_back(&ParallelLevelArg); >>> WrapperArgs.emplace_back(&WrapperArg); >>> WrapperArgs.emplace_back(&SharedArgsList); >>> @@ -2440,7 +2449,8 @@ llvm::Function *CGOpenMPRuntimeNVPTX::cr >>> Fn->setLinkage(llvm::GlobalValue::InternalLinkage); >>> >>> CodeGenFunction CGF(CGM, /*suppressNewContext=*/true); >>> - CGF.StartFunction(GlobalDecl(), Ctx.VoidTy, Fn, CGFI, WrapperArgs); >>> + CGF.StartFunction(GlobalDecl(), Ctx.VoidTy, Fn, CGFI, WrapperArgs, >>> + D.getLocStart(), D.getLocStart()); >>> >>> const auto *RD = CS.getCapturedRecordDecl(); >>> auto CurField = RD->field_begin(); >>> @@ -2489,7 +2499,7 @@ llvm::Function *CGOpenMPRuntimeNVPTX::cr >>> Args.emplace_back(Arg); >>> } >>> >>> - emitCall(CGF, OutlinedParallelFn, Args); >>> + emitOutlinedFunctionCall(CGF, D.getLocStart(), OutlinedParallelFn, >>> Args); >>> CGF.FinishFunction(); >>> return Fn; >>> } >>> >>> Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fcfe%2Ftrunk%2Flib%2FCodeGen%2FCGOpenMPRuntimeNVPTX.h%3Frev%3D321816%26r1%3D321815%26r2%3D321816%26view%3Ddiff&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=19CSmcdZgYmCiINSyZFKwPxMvQNQa2G3CFxeoOUX7ME%3D&reserved=0 >>> >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h (original) >>> +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.h Thu Jan 4 11:45:16 2018 >>> @@ -36,8 +36,9 @@ private: >>> public: >>> llvm::Function *WorkerFn; >>> const CGFunctionInfo *CGFI; >>> + SourceLocation Loc; >>> >>> - WorkerFunctionState(CodeGenModule &CGM); >>> + WorkerFunctionState(CodeGenModule &CGM, SourceLocation Loc); >>> >>> private: >>> void createWorkerFunction(CodeGenModule &CGM); >>> >>> Modified: cfe/trunk/test/OpenMP/target_parallel_debug_codegen.cpp >>> URL: >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fcfe%2Ftrunk%2Ftest%2FOpenMP%2Ftarget_parallel_debug_codegen.cpp%3Frev%3D321816%26r1%3D321815%26r2%3D321816%26view%3Ddiff&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=0E6M3IQr%2BIDOO69bBoA%2BipyxmdEDhviQpGPcUYq8WO8%3D&reserved=0 >>> >>> ============================================================================== >>> --- cfe/trunk/test/OpenMP/target_parallel_debug_codegen.cpp (original) >>> +++ cfe/trunk/test/OpenMP/target_parallel_debug_codegen.cpp Thu Jan 4 >>> 11:45:16 2018 >>> @@ -116,8 +116,8 @@ int main() { >>> // CHECK: !DILocalVariable(name: ".bound_tid.", >>> // CHECK-SAME: DIFlagArtificial >>> // CHECK: !DILocalVariable(name: "c", >>> -// CHECK-SAMEi-NOT: DIFlagArtificial >>> +// CHECK-SAME: line: 11 >>> // CHECK: !DILocalVariable(name: "a", >>> -// CHECK-SAMEi-NOT: DIFlagArtificial >>> +// CHECK-SAME: line: 9 >>> // CHECK: !DILocalVariable(name: "b", >>> -// CHECK-SAMEi-NOT: DIFlagArtificial >>> +// CHECK-SAME: line: 10 >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcfe-commits&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=j5Uz3DcBR8HHqvuw8ZIaO4jbM67vxo8045jHkAse3IA%3D&reserved=0 >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcfe-commits&data=02%7C01%7C%7Cf0fd30fe0fc94a6ee12e08d55cf1c15b%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636517115748946666&sdata=j5Uz3DcBR8HHqvuw8ZIaO4jbM67vxo8045jHkAse3IA%3D&reserved=0 >>
signature.asc
Description: OpenPGP digital signature
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits