Index: clang/lib/CodeGen/CodeGenModule.cpp =================================================================== --- clang/lib/CodeGen/CodeGenModule.cpp +++ clang/lib/CodeGen/CodeGenModule.cpp @@ -1501,6 +1501,8 @@ // Turn "unsigned type" to "utype" if (typeNameRef.consume_front("unsigned ")) return std::string("u") + typeNameRef.str(); + if (typeNameRef.consume_front("signed ")) + return typeNameRef.str(); } return typeName; Index: clang/test/CodeGenOpenCL/kernel-arg-info.cl =================================================================== --- clang/test/CodeGenOpenCL/kernel-arg-info.cl +++ clang/test/CodeGenOpenCL/kernel-arg-info.cl @@ -107,6 +107,16 @@ // CHECK-NOT: !kernel_arg_name // ARGINFO: !kernel_arg_name ![[PIPE_ARG_NAMES:[0-9]+]] +kernel void foo9(signed char si1, global const signed char* si2) {} +// CHECK: define{{.*}} spir_kernel void @foo9{{[^!]+}} +// CHECK: !kernel_arg_addr_space ![[SINT_AS_QUAL:[0-9]+]] +// CHECK: !kernel_arg_access_qual ![[MD42]] +// CHECK: !kernel_arg_type ![[SINT_TY:[0-9]+]] +// CHECK: !kernel_arg_base_type ![[SINT_TY]] +// CHECK: !kernel_arg_type_qual ![[SINT_QUAL:[0-9]+]] +// CHECK-NOT: !kernel_arg_name +// ARGINFO: !kernel_arg_name ![[SINT_ARG_NAMES:[0-9]+]] + // CHECK: ![[MD11]] = !{i32 1, i32 1, i32 1, i32 1, i32 2, i32 2, i32 1, i32 1, i32 1, i32 1, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 0, i32 0, i32 0, i32 0} // CHECK: ![[MD12]] = !{!"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none", !"none"} // CHECK: ![[MD13]] = !{!"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int*", !"int", !"int", !"int", !"int"} @@ -146,3 +156,7 @@ // CHECK: ![[PIPE_BASE_TY]] = !{!"int", !"uchar", !"uchar __attribute__((ext_vector_type(2)))", !"uchar", !"uchar"} // CHECK: ![[PIPE_QUAL]] = !{!"pipe", !"pipe", !"pipe", !"pipe", !"pipe"} // ARGINFO: ![[PIPE_ARG_NAMES]] = !{!"p1", !"p2", !"p3", !"p4", !"p5"} +// CHECK: ![[SINT_AS_QUAL]] = !{i32 0, i32 1} +// CHECK: ![[SINT_TY]] = !{!"char", !"char*"} +// CHECK: ![[SINT_QUAL]] = !{!"", !"const"} +// ARGINFO: ![[SINT_ARG_NAMES]] = !{!"si1", !"si2"}