mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-10 22:43:53 +00:00
AMDGPU: Fix bug causing crash due to invalid opencl version metadata.
Differential Revision: https://reviews.llvm.org/D22526 llvm-svn: 276119
This commit is contained in:
parent
dfb328c437
commit
479ba458b3
@ -783,15 +783,19 @@ void AMDGPUAsmPrinter::emitStartOfRuntimeMetadata(const Module &M) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
8
test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
Normal file
8
test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
Normal file
@ -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 = !{}
|
9
test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
Normal file
9
test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
Normal file
@ -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 = !{}
|
9
test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
Normal file
9
test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
Normal file
@ -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}
|
Loading…
x
Reference in New Issue
Block a user