From 2a1590140ec72ac10922a980d5875aee9e825efe Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Thu, 10 Dec 2020 06:55:12 -0800 Subject: [PATCH 1/2] [SYCL] Add assertions to copyBetweenPrivateAndShadow function --- llvm/lib/SYCLLowerIR/LowerWGScope.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp index 14087420587e3..d8fe42b2140d2 100644 --- a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp +++ b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp @@ -375,6 +375,7 @@ using LocalsSet = SmallPtrSet; static void copyBetweenPrivateAndShadow(Value *L, GlobalVariable *Shadow, IRBuilder<> &Builder, bool Loc2Shadow) { + assert(isa(L->getType())); Type *T = nullptr; MaybeAlign LocAlign(0); @@ -382,18 +383,21 @@ static void copyBetweenPrivateAndShadow(Value *L, GlobalVariable *Shadow, T = AI->getAllocatedType(); LocAlign = MaybeAlign(AI->getAlignment()); } else { - if (cast(L)->hasByValAttr()) { - T = cast(L)->getParamByValType(); - LocAlign = MaybeAlign(cast(L)->getParamAlignment()); + auto Arg = cast(L); + if (Arg->hasByValAttr()) { + T = Arg->getParamByValType(); + LocAlign = MaybeAlign(Arg->getParamAlignment()); } else { - Type *Ty = cast(L)->getType(); + Type *Ty = Arg->getType(); Module &M = *Shadow->getParent(); LocAlign = M.getDataLayout().getValueOrABITypeAlignment( - MaybeAlign(cast(L)->getParamAlignment()), Ty); - T = cast(L)->getType()->getPointerElementType(); + MaybeAlign(Arg->getParamAlignment()), Ty); + T = Arg->getType()->getPointerElementType(); } } + assert(T && "Unexpected type"); + if (T->isAggregateType()) { // TODO: we should use methods which directly return MaybeAlign once such // are added to LLVM for AllocaInst and GlobalVariable From 89332367979cb57742219893069a58a3e67dcddd Mon Sep 17 00:00:00 2001 From: Artur Gainullin Date: Thu, 10 Dec 2020 07:07:13 -0800 Subject: [PATCH 2/2] [SYCL] Don't dump IR and dot files by default in the LowerWGScope pass --- llvm/lib/SYCLLowerIR/LowerWGScope.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp index d8fe42b2140d2..258ea475b49ac 100644 --- a/llvm/lib/SYCLLowerIR/LowerWGScope.cpp +++ b/llvm/lib/SYCLLowerIR/LowerWGScope.cpp @@ -106,7 +106,7 @@ static constexpr char PFWI_MD[] = "parallel_for_work_item"; static cl::opt Debug("sycl-lower-wg-debug", llvm::cl::Optional, llvm::cl::Hidden, llvm::cl::desc("Debug SYCL work group code lowering"), - llvm::cl::init(10)); + llvm::cl::init(1)); namespace { class SYCLLowerWGScopeLegacyPass : public FunctionPass {