forked from OSchip/llvm-project
[OpenCL] Fix pipe built-in functions return type.
By default return type of call expressions calling built-in functions is set to bool. Fixes https://llvm.org/bugs/show_bug.cgi?id=30219. Reviewers: Anastasia Subscribers: dmitry, cfe-commits, yaxunl Differential Revision: https://reviews.llvm.org/D24136 llvm-svn: 280800
This commit is contained in:
parent
51da9c7178
commit
af17c7959e
|
@ -1020,6 +1020,7 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
|
|||
// check for the argument.
|
||||
if (SemaBuiltinRWPipe(*this, TheCall))
|
||||
return ExprError();
|
||||
TheCall->setType(Context.IntTy);
|
||||
break;
|
||||
case Builtin::BIreserve_read_pipe:
|
||||
case Builtin::BIreserve_write_pipe:
|
||||
|
@ -1047,6 +1048,7 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
|
|||
case Builtin::BIget_pipe_max_packets:
|
||||
if (SemaBuiltinPipePackets(*this, TheCall))
|
||||
return ExprError();
|
||||
TheCall->setType(Context.UnsignedIntTy);
|
||||
break;
|
||||
case Builtin::BIto_global:
|
||||
case Builtin::BIto_local:
|
||||
|
|
|
@ -59,3 +59,19 @@ void test7(write_only pipe int p, global int *ptr) {
|
|||
// CHECK: call i32 @__get_pipe_max_packets(%opencl.pipe_t* %{{.*}})
|
||||
*ptr = get_pipe_max_packets(p);
|
||||
}
|
||||
|
||||
void test8(read_only pipe int r, write_only pipe int w, global int *ptr) {
|
||||
// verify that return type is correctly casted to i1 value
|
||||
// CHECK: %[[R:[0-9]+]] = call i32 @__read_pipe_2
|
||||
// CHECK: icmp ne i32 %[[R]], 0
|
||||
if (read_pipe(r, ptr)) *ptr = -1;
|
||||
// CHECK: %[[W:[0-9]+]] = call i32 @__write_pipe_2
|
||||
// CHECK: icmp ne i32 %[[W]], 0
|
||||
if (write_pipe(w, ptr)) *ptr = -1;
|
||||
// CHECK: %[[N:[0-9]+]] = call i32 @__get_pipe_num_packets
|
||||
// CHECK: icmp ne i32 %[[N]], 0
|
||||
if (get_pipe_num_packets(r)) *ptr = -1;
|
||||
// CHECK: %[[M:[0-9]+]] = call i32 @__get_pipe_max_packets
|
||||
// CHECK: icmp ne i32 %[[M]], 0
|
||||
if (get_pipe_max_packets(w)) *ptr = -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue