forked from OSchip/llvm-project
Fix OpenCL/SPIR kernel_arg_type metadata node
This fixes a bug where kernel_arg_type was always changing 'unsigned ' to 'u' for any parameter type, including non-canonical types. Example: typedef unsigned int myunsignedint; would report: "myunt" llvm-svn: 214305
This commit is contained in:
parent
c3478490ed
commit
152493b635
|
@ -384,7 +384,7 @@ static void GenOpenCLArgMetadata(const FunctionDecl *FD, llvm::Function *Fn,
|
|||
|
||||
// Turn "unsigned type" to "utype"
|
||||
std::string::size_type pos = typeName.find("unsigned");
|
||||
if (pos != std::string::npos)
|
||||
if (pointeeTy.isCanonical() && pos != std::string::npos)
|
||||
typeName.erase(pos+1, 8);
|
||||
|
||||
argTypeNames.push_back(llvm::MDString::get(Context, typeName));
|
||||
|
@ -410,7 +410,7 @@ static void GenOpenCLArgMetadata(const FunctionDecl *FD, llvm::Function *Fn,
|
|||
|
||||
// Turn "unsigned type" to "utype"
|
||||
std::string::size_type pos = typeName.find("unsigned");
|
||||
if (pos != std::string::npos)
|
||||
if (ty.isCanonical() && pos != std::string::npos)
|
||||
typeName.erase(pos+1, 8);
|
||||
|
||||
argTypeNames.push_back(llvm::MDString::get(Context, typeName));
|
||||
|
|
|
@ -26,3 +26,12 @@ kernel void foo3(__global half * X) {
|
|||
// CHECK: metadata !{metadata !"kernel_arg_type", metadata !"half*"}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_type_qual", metadata !""}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_name", metadata !"X"}
|
||||
|
||||
typedef unsigned int myunsignedint;
|
||||
kernel void foo4(__global unsigned int * X, __global myunsignedint * Y) {
|
||||
}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_addr_space", i32 1, i32 1}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_access_qual", metadata !"none", metadata !"none"}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_type", metadata !"uint*", metadata !"myunsignedint*"}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_type_qual", metadata !"", metadata !""}
|
||||
// CHECK: metadata !{metadata !"kernel_arg_name", metadata !"X", metadata !"Y"}
|
||||
|
|
Loading…
Reference in New Issue