Loading clang/lib/CodeGen/CGKokkos.cpp +13 −8 Original line number Diff line number Diff line Loading @@ -198,7 +198,7 @@ CodeGenFunction::EmitKokkosParallelForInductionVar(const LambdaExpr *Lambda) { std::queue<const ParmVarDecl*> params; for (int i = 0; i<MD->getNumParams(); i++) { for (unsigned int i = 0; i<MD->getNumParams(); i++) { const ParmVarDecl *InductionVarDecl = MD->getParamDecl(i); assert(InductionVarDecl && "EmitKokkosParallelFor() -- bad loop variable decl!"); Loading Loading @@ -276,12 +276,12 @@ bool CodeGenFunction::EmitKokkosParallelFor(const CallExpr *CE, const InitListExpr *StartingBounds = dyn_cast<InitListExpr>(CXXTO->getArg(0)->IgnoreImplicit()); const InitListExpr *UpperBounds = dyn_cast<InitListExpr>(CXXTO->getArg(1)->IgnoreImplicit()); for (int i = 0; i<StartingBounds->getNumInits(); i++) { for (unsigned int i = 0; i<StartingBounds->getNumInits(); i++) { const Expr *val = StartingBounds->getInit(i)->IgnoreImplicit(); StartQueue.push(val); } for (int i = 0; i<UpperBounds->getNumInits(); i++) { for (unsigned int i = 0; i<UpperBounds->getNumInits(); i++) { const Expr *val = UpperBounds->getInit(i)->IgnoreImplicit(); DimQueue.push(val); } Loading Loading @@ -311,11 +311,16 @@ bool CodeGenFunction::EmitKokkosParallelFor(const CallExpr *CE, const ParmVarDecl *InductionVarDecl = params.front(); params.pop(); if (StartQueue.size() == 0) { llvm::Value *Zero = llvm::ConstantInt::get(ConvertType(InductionVarDecl->getType()), 0); Builder.CreateStore(Zero, GetAddrOfLocalVar(InductionVarDecl)); } else { const Expr *SE = StartQueue.front(); StartQueue.pop(); llvm::Value *LoopStart = EmitScalarExpr(SE); Builder.CreateStore(LoopStart, GetAddrOfLocalVar(InductionVarDecl)); } // Extract a conveince block and setup the lexical scope based on // the lambda's source range. Loading Loading
clang/lib/CodeGen/CGKokkos.cpp +13 −8 Original line number Diff line number Diff line Loading @@ -198,7 +198,7 @@ CodeGenFunction::EmitKokkosParallelForInductionVar(const LambdaExpr *Lambda) { std::queue<const ParmVarDecl*> params; for (int i = 0; i<MD->getNumParams(); i++) { for (unsigned int i = 0; i<MD->getNumParams(); i++) { const ParmVarDecl *InductionVarDecl = MD->getParamDecl(i); assert(InductionVarDecl && "EmitKokkosParallelFor() -- bad loop variable decl!"); Loading Loading @@ -276,12 +276,12 @@ bool CodeGenFunction::EmitKokkosParallelFor(const CallExpr *CE, const InitListExpr *StartingBounds = dyn_cast<InitListExpr>(CXXTO->getArg(0)->IgnoreImplicit()); const InitListExpr *UpperBounds = dyn_cast<InitListExpr>(CXXTO->getArg(1)->IgnoreImplicit()); for (int i = 0; i<StartingBounds->getNumInits(); i++) { for (unsigned int i = 0; i<StartingBounds->getNumInits(); i++) { const Expr *val = StartingBounds->getInit(i)->IgnoreImplicit(); StartQueue.push(val); } for (int i = 0; i<UpperBounds->getNumInits(); i++) { for (unsigned int i = 0; i<UpperBounds->getNumInits(); i++) { const Expr *val = UpperBounds->getInit(i)->IgnoreImplicit(); DimQueue.push(val); } Loading Loading @@ -311,11 +311,16 @@ bool CodeGenFunction::EmitKokkosParallelFor(const CallExpr *CE, const ParmVarDecl *InductionVarDecl = params.front(); params.pop(); if (StartQueue.size() == 0) { llvm::Value *Zero = llvm::ConstantInt::get(ConvertType(InductionVarDecl->getType()), 0); Builder.CreateStore(Zero, GetAddrOfLocalVar(InductionVarDecl)); } else { const Expr *SE = StartQueue.front(); StartQueue.pop(); llvm::Value *LoopStart = EmitScalarExpr(SE); Builder.CreateStore(LoopStart, GetAddrOfLocalVar(InductionVarDecl)); } // Extract a conveince block and setup the lexical scope based on // the lambda's source range. Loading