[llvm] r276119 - AMDGPU: Fix bug causing crash due to invalid opencl version metadata.
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 28 07:52:27 PDT 2016
On Wed, Jul 20, 2016 at 02:38:07PM -0000, Yaxun Liu via llvm-commits wrote:
> Author: yaxunl
> Date: Wed Jul 20 09:38:06 2016
> New Revision: 276119
>
> URL: http://llvm.org/viewvc/llvm-project?rev=276119&view=rev
> Log:
> AMDGPU: Fix bug causing crash due to invalid opencl version metadata.
>
> Differential Revision: https://reviews.llvm.org/D22526
>
> Added:
> llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
> llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
> llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
> Modified:
> llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
>
Hi Hans,
Is this OK to merge to the 3.9 branch? I am the code owner, and I approve.
-Tom
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp?rev=276119&r1=276118&r2=276119&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp Wed Jul 20 09:38:06 2016
> @@ -783,15 +783,19 @@ void AMDGPUAsmPrinter::emitStartOfRuntim
> emitRuntimeMDIntValue(OutStreamer, RuntimeMD::KeyMDVersion,
> RuntimeMD::MDVersion << 8 | RuntimeMD::MDRevision, 2);
> if (auto MD = M.getNamedMetadata("opencl.ocl.version")) {
> - emitRuntimeMDIntValue(OutStreamer, RuntimeMD::KeyLanguage,
> - RuntimeMD::OpenCL_C, 1);
> - auto Node = MD->getOperand(0);
> - unsigned short Major = mdconst::extract<ConstantInt>(Node->getOperand(0))
> - ->getZExtValue();
> - unsigned short Minor = mdconst::extract<ConstantInt>(Node->getOperand(1))
> - ->getZExtValue();
> - emitRuntimeMDIntValue(OutStreamer, RuntimeMD::KeyLanguageVersion,
> - Major * 100 + Minor * 10, 2);
> + if (MD->getNumOperands()) {
> + auto Node = MD->getOperand(0);
> + if (Node->getNumOperands() > 1) {
> + emitRuntimeMDIntValue(OutStreamer, RuntimeMD::KeyLanguage,
> + RuntimeMD::OpenCL_C, 1);
> + uint16_t Major = mdconst::extract<ConstantInt>(Node->getOperand(0))
> + ->getZExtValue();
> + uint16_t Minor = mdconst::extract<ConstantInt>(Node->getOperand(1))
> + ->getZExtValue();
> + emitRuntimeMDIntValue(OutStreamer, RuntimeMD::KeyLanguageVersion,
> + Major * 100 + Minor * 10, 2);
> + }
> + }
> }
> }
>
>
> Added: llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll?rev=276119&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll (added)
> +++ llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll Wed Jul 20 09:38:06 2016
> @@ -0,0 +1,8 @@
> +; RUN: llc -mtriple=amdgcn--amdhsa < %s | FileCheck %s
> +; check llc does not crash for invalid opencl version metadata
> +
> +; CHECK: .section .AMDGPU.runtime_metadata
> +; CHECK-NEXT: .byte 1
> +; CHECK-NEXT: .short 256
> +
> +!opencl.ocl.version = !{}
>
> Added: llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll?rev=276119&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll (added)
> +++ llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll Wed Jul 20 09:38:06 2016
> @@ -0,0 +1,9 @@
> +; RUN: llc -mtriple=amdgcn--amdhsa < %s | FileCheck %s
> +; check llc does not crash for invalid opencl version metadata
> +
> +; CHECK: .section .AMDGPU.runtime_metadata
> +; CHECK-NEXT: .byte 1
> +; CHECK-NEXT: .short 256
> +
> +!opencl.ocl.version = !{!0}
> +!0 = !{}
>
> Added: llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll?rev=276119&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll (added)
> +++ llvm/trunk/test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll Wed Jul 20 09:38:06 2016
> @@ -0,0 +1,9 @@
> +; RUN: llc -mtriple=amdgcn--amdhsa < %s | FileCheck %s
> +; check llc does not crash for invalid opencl version metadata
> +
> +; CHECK: .section .AMDGPU.runtime_metadata
> +; CHECK-NEXT: .byte 1
> +; CHECK-NEXT: .short 256
> +
> +!opencl.ocl.version = !{!0}
> +!0 = !{i32 1}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list