Skip to content
Snippets Groups Projects
Commit 12fe3c4c authored by Alexey Bader's avatar Alexey Bader
Browse files

[OpenCL] Fix code generation of kernel pipe parameters.

Improved test with user define structure pipe type case.

Reviewers: Anastasia, pxli168
Subscribers: yaxunl, cfe-commits

Differential revision: http://reviews.llvm.org/D21744

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275259 91177308-0d34-0410-b5e6-96231b3b80d8
parent 2d7a5b29
No related branches found
No related tags found
No related merge requests found
......@@ -516,7 +516,8 @@ static void GenOpenCLArgMetadata(const FunctionDecl *FD, llvm::Function *Fn,
// Get argument type name.
std::string typeName;
if (isPipe)
typeName = cast<PipeType>(ty)->getElementType().getAsString(Policy);
typeName = ty.getCanonicalType()->getAs<PipeType>()->getElementType()
.getAsString(Policy);
else
typeName = ty.getUnqualifiedType().getAsString(Policy);
......@@ -529,8 +530,9 @@ static void GenOpenCLArgMetadata(const FunctionDecl *FD, llvm::Function *Fn,
std::string baseTypeName;
if (isPipe)
baseTypeName =
cast<PipeType>(ty)->getElementType().getCanonicalType().getAsString(Policy);
baseTypeName = ty.getCanonicalType()->getAs<PipeType>()
->getElementType().getCanonicalType()
.getAsString(Policy);
else
baseTypeName =
ty.getUnqualifiedType().getCanonicalType().getAsString(Policy);
......
......@@ -25,3 +25,23 @@ void test4(read_only pipe uchar3 p) {
void test5(read_only pipe int4 p) {
// CHECK: define void @test5(%opencl.pipe_t* %p)
}
typedef read_only pipe int MyPipe;
kernel void test6(MyPipe p) {
// CHECK: define void @test6(%opencl.pipe_t* %p)
}
struct Person {
const char *Name;
bool isFemale;
int ID;
};
void test_reserved_read_pipe(global struct Person *SDst,
read_only pipe struct Person SPipe) {
// CHECK: define void @test_reserved_read_pipe
read_pipe (SPipe, SDst);
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_t* %{{.*}}, i8* %{{.*}})
read_pipe (SPipe, SDst);
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_t* %{{.*}}, i8* %{{.*}})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment