@@ -106,7 +106,7 @@ static constexpr char PFWI_MD[] = "parallel_for_work_item";
106
106
static cl::opt<int > Debug (" sycl-lower-wg-debug" , llvm::cl::Optional,
107
107
llvm::cl::Hidden,
108
108
llvm::cl::desc (" Debug SYCL work group code lowering" ),
109
- llvm::cl::init(10 ));
109
+ llvm::cl::init(1 ));
110
110
111
111
namespace {
112
112
class SYCLLowerWGScopeLegacyPass : public FunctionPass {
@@ -375,25 +375,29 @@ using LocalsSet = SmallPtrSet<AllocaInst *, 4>;
375
375
376
376
static void copyBetweenPrivateAndShadow (Value *L, GlobalVariable *Shadow,
377
377
IRBuilder<> &Builder, bool Loc2Shadow) {
378
+ assert (isa<PointerType>(L->getType ()));
378
379
Type *T = nullptr ;
379
380
MaybeAlign LocAlign (0 );
380
381
381
382
if (const auto *AI = dyn_cast<AllocaInst>(L)) {
382
383
T = AI->getAllocatedType ();
383
384
LocAlign = MaybeAlign (AI->getAlignment ());
384
385
} else {
385
- if (cast<Argument>(L)->hasByValAttr ()) {
386
- T = cast<Argument>(L)->getParamByValType ();
387
- LocAlign = MaybeAlign (cast<Argument>(L)->getParamAlignment ());
386
+ auto Arg = cast<Argument>(L);
387
+ if (Arg->hasByValAttr ()) {
388
+ T = Arg->getParamByValType ();
389
+ LocAlign = MaybeAlign (Arg->getParamAlignment ());
388
390
} else {
389
- Type *Ty = cast<Argument>(L) ->getType ();
391
+ Type *Ty = Arg ->getType ();
390
392
Module &M = *Shadow->getParent ();
391
393
LocAlign = M.getDataLayout ().getValueOrABITypeAlignment (
392
- MaybeAlign (cast<Argument>(L) ->getParamAlignment ()), Ty);
393
- T = cast<Argument>(L) ->getType ()->getPointerElementType ();
394
+ MaybeAlign (Arg ->getParamAlignment ()), Ty);
395
+ T = Arg ->getType ()->getPointerElementType ();
394
396
}
395
397
}
396
398
399
+ assert (T && " Unexpected type" );
400
+
397
401
if (T->isAggregateType ()) {
398
402
// TODO: we should use methods which directly return MaybeAlign once such
399
403
// are added to LLVM for AllocaInst and GlobalVariable
0 commit comments