Skip to content

Commit f1db417

Browse files
Andrew Savonichevvladimirlaz
authored andcommitted
Do not set noalias attribute for non-pointer arguments
Signed-off-by: Andrew Savonichev <[email protected]>
1 parent 3631901 commit f1db417

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

clang/lib/CodeGen/CGCall.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2414,7 +2414,8 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI,
24142414

24152415
if (Arg->getType().isRestrictQualified() ||
24162416
(CurCodeDecl &&
2417-
CurCodeDecl->hasAttr<SYCLIntelKernelArgsRestrictAttr>()))
2417+
CurCodeDecl->hasAttr<SYCLIntelKernelArgsRestrictAttr>() &&
2418+
Arg->getType()->isPointerType()))
24182419
AI->addAttr(llvm::Attribute::NoAlias);
24192420

24202421
// LLVM expects swifterror parameters to be used in very restricted

clang/test/CodeGenSYCL/intel-restrict.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,17 @@ int foo(int X) {
5252
foostr<decltype(AccA), decltype(AccB)> f(AccA, AccB);
5353
cgh.single_task<class kernel_restrict_struct>(f);
5454
});
55+
56+
// CHECK: define {{.*}} spir_kernel {{.*}}kernel_restrict_other_params{{.*}}(i32 addrspace(1)* noalias %{{.*}} i32 addrspace(1)* noalias %{{.*}}, i32 %_arg_9)
57+
int num = 42;
58+
Q.submit([&](cl::sycl::handler& cgh) {
59+
auto AccA = BufA.get_access<sycl_read_write, sycl_global_buffer>(cgh);
60+
auto AccB = BufB.get_access<sycl_read_write, sycl_global_buffer>(cgh);
61+
cgh.single_task<class kernel_restrict_other_params>(
62+
[=]() [[intel::kernel_args_restrict]] {
63+
AccB[0] = AccA[0] = num;
64+
});
65+
});
5566
}
5667
return B[0];
5768
}

0 commit comments

Comments
 (0)