Index: lib/CodeGen/CodeGenFunction.cpp =================================================================== --- lib/CodeGen/CodeGenFunction.cpp +++ lib/CodeGen/CodeGenFunction.cpp @@ -620,7 +620,10 @@ // Get image and pipe access qualifier: if (ty->isImageType()|| ty->isPipeType()) { - const OpenCLAccessAttr *A = parm->getAttr(); + const Decl *PDecl = parm; + if (auto *TD = dyn_cast(ty)) + PDecl = TD->getDecl(); + const OpenCLAccessAttr *A = PDecl->getAttr(); if (A && A->isWriteOnly()) accessQuals.push_back(llvm::MDString::get(Context, "write_only")); else if (A && A->isReadWrite()) Index: test/CodeGenOpenCL/kernel-arg-info.cl =================================================================== --- test/CodeGenOpenCL/kernel-arg-info.cl +++ test/CodeGenOpenCL/kernel-arg-info.cl @@ -61,6 +61,21 @@ // CHECK-NOT: !kernel_arg_name // ARGINFO: !kernel_arg_name ![[MD54:[0-9]+]] +typedef read_only image1d_t ROImage; +typedef write_only image1d_t WOImage; +typedef read_write image1d_t RWImage; +kernel void foo6(ROImage ro, WOImage wo, RWImage rw) { +} +// CHECK: define spir_kernel void @foo6{{[^!]+}} +// CHECK: !kernel_arg_addr_space ![[MD61:[0-9]+]] +// CHECK: !kernel_arg_access_qual ![[MD62:[0-9]+]] +// CHECK: !kernel_arg_type ![[MD63:[0-9]+]] +// CHECK: !kernel_arg_base_type ![[MD64:[0-9]+]] +// CHECK: !kernel_arg_type_qual ![[MD65:[0-9]+]] +// CHECK-NOT: !kernel_arg_name +// ARGINFO: !kernel_arg_name ![[MD66:[0-9]+]] + + // CHECK: ![[MD11]] = !{i32 1, i32 0, i32 0, i32 2, i32 1, i32 1} // CHECK: ![[MD12]] = !{!"none", !"none", !"none", !"none", !"none", !"none"} // CHECK: ![[MD13]] = !{!"int*", !"int", !"int", !"float*", !"int*", !"int*"} @@ -87,3 +102,10 @@ // CHECK: ![[MD53]] = !{!"image1d_t", !"image1d_t"} // ARGINFO: ![[MD54]] = !{!"img1", !"img2"} +// CHECK: ![[MD61]] = !{i32 1, i32 1, i32 1} +// CHECK: ![[MD62]] = !{!"read_only", !"write_only", !"read_write"} +// CHECK: ![[MD63]] = !{!"ROImage", !"WOImage", !"RWImage"} +// CHECK: ![[MD64]] = !{!"image1d_t", !"image1d_t", !"image1d_t"} +// CHECK: ![[MD65]] = !{!"", !"", !""} +// ARGINFO: ![[MD66]] = !{!"ro", !"wo", !"rw"} +