[llvm] r249073 - AMDGPU/SI: Remove assert from AMDGPUOpenCLImageTypeLowering pass
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 1 14:16:06 PDT 2015
Author: tstellar
Date: Thu Oct 1 16:16:05 2015
New Revision: 249073
URL: http://llvm.org/viewvc/llvm-project?rev=249073&view=rev
Log:
AMDGPU/SI: Remove assert from AMDGPUOpenCLImageTypeLowering pass
Summary:
Instead of asserting when the kernel metadata is different than we expect,
we should just skip lowering that function. This fixes assertion
failures with OpenCL argument metadata from older LLVM releases.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D13356
Added:
llvm/trunk/test/CodeGen/AMDGPU/opencl-image-metadata.ll
Modified:
llvm/trunk/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp
Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp?rev=249073&r1=249072&r2=249073&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp Thu Oct 1 16:16:05 2015
@@ -94,8 +94,12 @@ GetFunctionFromMDNode(MDNode *Node) {
return nullptr;
if (!ArgNode->getOperand(0))
return nullptr;
- assert(cast<MDString>(ArgNode->getOperand(0))->getString() ==
- KernelArgMDNodeNames[i] && "Wrong kernel arg metadata name");
+
+ // FIXME: It should be possible to do image lowering when some metadata
+ // args missing or not in the expected order.
+ MDString *StringNode = dyn_cast<MDString>(ArgNode->getOperand(0));
+ if (!StringNode || StringNode->getString() != KernelArgMDNodeNames[i])
+ return nullptr;
}
return F;
Added: llvm/trunk/test/CodeGen/AMDGPU/opencl-image-metadata.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/opencl-image-metadata.ll?rev=249073&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/opencl-image-metadata.ll (added)
+++ llvm/trunk/test/CodeGen/AMDGPU/opencl-image-metadata.ll Thu Oct 1 16:16:05 2015
@@ -0,0 +1,24 @@
+; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG --check-prefix=FUNC %s
+; RUN: llc < %s -march=amdgcn -mcpu=SI -verify-machineinstrs | FileCheck --check-prefix=SI --check-prefix=FUNC %s
+
+; Make sure the OpenCL Image lowering pass doesn't crash when argument metadata
+; is not in expected order.
+
+; EG: CF_END
+; SI: s_endpgm
+define void @kernel(i32 addrspace(1)* %out) {
+entry:
+ store i32 0, i32 addrspace(1)* %out
+ ret void
+}
+
+attributes #3 = { nounwind }
+
+!opencl.kernels = !{!0}
+
+!0 = !{void (i32 addrspace(1)*)* @kernel, !1, !2, !3, !4, !5}
+!1 = !{!"kernel_arg_addr_space", i32 0}
+!2 = !{!"kernel_arg_access_qual", !"none"}
+!3 = !{!"kernel_arg_type", !"int*"}
+!4 = !{!"kernel_arg_type_qual", !""}
+!5 = !{!"kernel_arg_name", !""}
More information about the llvm-commits
mailing list