mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
f7f1be8b97
The debug value live intervals computed by Live Debug Variables may extend beyond the range of the debug location's lexical scope. In this case, splitting of an interval can result in an interval outside of the scope being created, causing extra unnecessary DBG_VALUEs to be emitted. To prevent this, trim the intervals to the lexical scope. This resolves PR33730. Reviewers: aprantl Differential Revision: https://reviews.llvm.org/D35953 llvm-svn: 309933
55 lines
3.0 KiB
LLVM
55 lines
3.0 KiB
LLVM
; RUN: llc < %s | FileCheck %s
|
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32"
|
|
target triple = "i686-apple-darwin"
|
|
; PR 9817
|
|
|
|
; There should be a DEBUG_VALUE for each call to llvm.dbg.value
|
|
|
|
; CHECK-LABEL: __OpenCL_test_kernel:
|
|
; CHECK-DAG: ##DEBUG_VALUE: __OpenCL_test_kernel:ip <-
|
|
; CHECK-DAG: ##DEBUG_VALUE: xxx <- 0
|
|
; CHECK-DAG: ##DEBUG_VALUE: gid <- %E{{..$}}
|
|
; CHECK-DAG: ##DEBUG_VALUE: idx <- %E{{..$}}
|
|
; CHECK-NOT: ##DEBUG_VALUE:
|
|
|
|
declare <4 x i32> @__amdil_get_global_id_int()
|
|
declare void @llvm.dbg.value(metadata, metadata, metadata)
|
|
define void @__OpenCL_test_kernel(i32 addrspace(1)* %ip) nounwind !dbg !0 {
|
|
entry:
|
|
call void @llvm.dbg.value(metadata i32 addrspace(1)* %ip, metadata !7, metadata !DIExpression()), !dbg !8
|
|
%0 = call <4 x i32> @__amdil_get_global_id_int() nounwind
|
|
%1 = extractelement <4 x i32> %0, i32 0
|
|
call void @llvm.dbg.value(metadata i32 %1, metadata !9, metadata !DIExpression()), !dbg !11
|
|
call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !DIExpression()), !dbg !14
|
|
%tmp2 = load i32, i32 addrspace(1)* %ip, align 4, !dbg !15
|
|
%tmp3 = add i32 0, %tmp2, !dbg !15
|
|
call void @llvm.dbg.value(metadata i32 %tmp3, metadata !13, metadata !DIExpression()), !dbg !15
|
|
%arrayidx = getelementptr i32, i32 addrspace(1)* %ip, i32 %1, !dbg !16
|
|
store i32 %tmp3, i32 addrspace(1)* %arrayidx, align 4, !dbg !16
|
|
ret void, !dbg !17
|
|
}
|
|
!llvm.dbg.cu = !{!2}
|
|
!llvm.module.flags = !{!20}
|
|
|
|
!0 = distinct !DISubprogram(name: "__OpenCL_test_kernel", linkageName: "__OpenCL_test_kernel", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !19, scope: !1, type: !3)
|
|
!1 = !DIFile(filename: "OCL6368.tmp.cl", directory: "E:CUsersCmvillmow.AMDCAppDataCLocalCTemp")
|
|
!2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "clc", isOptimized: false, emissionKind: FullDebug, file: !19, enums: !12, retainedTypes: !12, imports: null)
|
|
!3 = !DISubroutineType(types: !4)
|
|
!4 = !{null, !5}
|
|
!5 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: !6)
|
|
!6 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
|
|
!7 = !DILocalVariable(name: "ip", line: 1, arg: 1, scope: !0, file: !1, type: !5)
|
|
!8 = !DILocation(line: 1, column: 42, scope: !0)
|
|
!9 = !DILocalVariable(name: "gid", line: 3, scope: !10, file: !1, type: !6)
|
|
!10 = distinct !DILexicalBlock(line: 2, column: 1, file: !19, scope: !0)
|
|
!11 = !DILocation(line: 3, column: 41, scope: !10)
|
|
!12 = !{}
|
|
!13 = !DILocalVariable(name: "idx", line: 4, scope: !10, file: !1, type: !6)
|
|
!14 = !DILocation(line: 4, column: 20, scope: !10)
|
|
!15 = !DILocation(line: 5, column: 15, scope: !10)
|
|
!16 = !DILocation(line: 6, column: 18, scope: !10)
|
|
!17 = !DILocation(line: 7, column: 1, scope: !0)
|
|
!19 = !DIFile(filename: "OCL6368.tmp.cl", directory: "E:\5CUsers\5Cmvillmow.AMD\5CAppData\5CLocal\5CTemp")
|
|
!20 = !{i32 1, !"Debug Info Version", i32 3}
|
|
!21 = !DILocalVariable(name: "xxx", line: 4, scope: !10, file: !1, type: !6)
|