This revision was automatically updated to reflect the committed changes. Closed by commit rL275259: [OpenCL] Fix code generation of kernel pipe parameters. (authored by bader).
Changed prior to commit: http://reviews.llvm.org/D21744?vs=62100&id=63791#toc Repository: rL LLVM http://reviews.llvm.org/D21744 Files: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp cfe/trunk/test/CodeGenOpenCL/pipe_types.cl Index: cfe/trunk/test/CodeGenOpenCL/pipe_types.cl =================================================================== --- cfe/trunk/test/CodeGenOpenCL/pipe_types.cl +++ cfe/trunk/test/CodeGenOpenCL/pipe_types.cl @@ -25,3 +25,23 @@ 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* %{{.*}}) +} Index: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp =================================================================== --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp @@ -516,7 +516,8 @@ // 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 @@ 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);
Index: cfe/trunk/test/CodeGenOpenCL/pipe_types.cl =================================================================== --- cfe/trunk/test/CodeGenOpenCL/pipe_types.cl +++ cfe/trunk/test/CodeGenOpenCL/pipe_types.cl @@ -25,3 +25,23 @@ 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* %{{.*}}) +} Index: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp =================================================================== --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp @@ -516,7 +516,8 @@ // 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 @@ 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);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits