[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