xref: /llvm-project/llvm/test/DebugInfo/AMDGPU/dbg-value-sched-crash.ll (revision c441bfb7147d4648ff2c5ccd8a36f5acc1e271fd)
197a663b6SKonstantin Zhuravlyov; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji < %s | FileCheck %s
297a663b6SKonstantin Zhuravlyov
397a663b6SKonstantin Zhuravlyov; Make sure we do not crash during scheduling when DBG_VALUE is the first
497a663b6SKonstantin Zhuravlyov; instruction in the basic block.
597a663b6SKonstantin Zhuravlyov
697a663b6SKonstantin Zhuravlyov; LLVM IR generated with the following command and OpenCL source:
797a663b6SKonstantin Zhuravlyov;
897a663b6SKonstantin Zhuravlyov; $clang -cl-std=CL2.0 -g -O2 -target amdgcn-amd-amdhsa -S -emit-llvm <path-to-file>
997a663b6SKonstantin Zhuravlyov;
1097a663b6SKonstantin Zhuravlyov; kernel void kernel1(global int *A, global int *B) {
1197a663b6SKonstantin Zhuravlyov;   if (*A == 1) {
1297a663b6SKonstantin Zhuravlyov;     *B = 12;
1397a663b6SKonstantin Zhuravlyov;   }
1497a663b6SKonstantin Zhuravlyov;   if (*A == 2) {
1597a663b6SKonstantin Zhuravlyov;     *B = 13;
1697a663b6SKonstantin Zhuravlyov;   }
1797a663b6SKonstantin Zhuravlyov; }
1897a663b6SKonstantin Zhuravlyov
19abe04759SAdrian Prantldeclare void @llvm.dbg.value(metadata, metadata, metadata)
2097a663b6SKonstantin Zhuravlyov
2197a663b6SKonstantin Zhuravlyov; CHECK-LABEL: {{^}}kernel1:
2297a663b6SKonstantin Zhuravlyovdefine amdgpu_kernel void @kernel1(
23*c441bfb7SMatt Arsenault    ptr addrspace(1) nocapture readonly %A,
24*c441bfb7SMatt Arsenault    ptr addrspace(1) nocapture %B) !dbg !7  {
2597a663b6SKonstantin Zhuravlyoventry:
26*c441bfb7SMatt Arsenault  tail call void @llvm.dbg.value(metadata ptr addrspace(1) %A, metadata !13, metadata !19), !dbg !20
27*c441bfb7SMatt Arsenault  tail call void @llvm.dbg.value(metadata ptr addrspace(1) %B, metadata !14, metadata !19), !dbg !21
28*c441bfb7SMatt Arsenault  %0 = load i32, ptr addrspace(1) %A, align 4, !dbg !22, !tbaa !24
2997a663b6SKonstantin Zhuravlyov  %cmp = icmp eq i32 %0, 1, !dbg !28
3097a663b6SKonstantin Zhuravlyov  br i1 %cmp, label %if.then, label %if.end, !dbg !29
3197a663b6SKonstantin Zhuravlyov
3297a663b6SKonstantin Zhuravlyovif.then:                                          ; preds = %entry
33*c441bfb7SMatt Arsenault  store i32 12, ptr addrspace(1) %B, align 4, !dbg !30, !tbaa !24
34*c441bfb7SMatt Arsenault  %.pr = load i32, ptr addrspace(1) %A, align 4, !dbg !32, !tbaa !24
3597a663b6SKonstantin Zhuravlyov  br label %if.end, !dbg !34
3697a663b6SKonstantin Zhuravlyov
3797a663b6SKonstantin Zhuravlyovif.end:                                           ; preds = %if.then, %entry
3897a663b6SKonstantin Zhuravlyov  %1 = phi i32 [ %.pr, %if.then ], [ %0, %entry ], !dbg !32
3997a663b6SKonstantin Zhuravlyov  %cmp1 = icmp eq i32 %1, 2, !dbg !35
4097a663b6SKonstantin Zhuravlyov  br i1 %cmp1, label %if.then2, label %if.end3, !dbg !36
4197a663b6SKonstantin Zhuravlyov
4297a663b6SKonstantin Zhuravlyovif.then2:                                         ; preds = %if.end
43*c441bfb7SMatt Arsenault  store i32 13, ptr addrspace(1) %B, align 4, !dbg !37, !tbaa !24
4497a663b6SKonstantin Zhuravlyov  br label %if.end3, !dbg !39
4597a663b6SKonstantin Zhuravlyov
4697a663b6SKonstantin Zhuravlyovif.end3:                                          ; preds = %if.then2, %if.end
4797a663b6SKonstantin Zhuravlyov  ret void, !dbg !40
4897a663b6SKonstantin Zhuravlyov}
4997a663b6SKonstantin Zhuravlyov
5097a663b6SKonstantin Zhuravlyov!llvm.dbg.cu = !{!0}
5197a663b6SKonstantin Zhuravlyov!opencl.ocl.version = !{!3}
5297a663b6SKonstantin Zhuravlyov!llvm.module.flags = !{!4, !5}
5397a663b6SKonstantin Zhuravlyov!llvm.ident = !{!6}
5497a663b6SKonstantin Zhuravlyov
5597a663b6SKonstantin Zhuravlyov!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 4.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
5697a663b6SKonstantin Zhuravlyov!1 = !DIFile(filename: "dbg-value-sched-crash.cl", directory: "/some/random/directory")
5797a663b6SKonstantin Zhuravlyov!2 = !{}
5897a663b6SKonstantin Zhuravlyov!3 = !{i32 2, i32 0}
5997a663b6SKonstantin Zhuravlyov!4 = !{i32 2, !"Dwarf Version", i32 2}
6097a663b6SKonstantin Zhuravlyov!5 = !{i32 2, !"Debug Info Version", i32 3}
6197a663b6SKonstantin Zhuravlyov!6 = !{!"clang version 4.0 "}
622c864551SShiva Chen!7 = distinct !DISubprogram(name: "kernel1", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !12)
6397a663b6SKonstantin Zhuravlyov!8 = !DISubroutineType(types: !9)
6497a663b6SKonstantin Zhuravlyov!9 = !{null, !10, !10}
6597a663b6SKonstantin Zhuravlyov!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
6697a663b6SKonstantin Zhuravlyov!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
6797a663b6SKonstantin Zhuravlyov!12 = !{!13, !14}
6897a663b6SKonstantin Zhuravlyov!13 = !DILocalVariable(name: "A", arg: 1, scope: !7, file: !1, line: 1, type: !10)
6997a663b6SKonstantin Zhuravlyov!14 = !DILocalVariable(name: "B", arg: 2, scope: !7, file: !1, line: 1, type: !10)
7097a663b6SKonstantin Zhuravlyov!15 = !{i32 1, i32 1}
7197a663b6SKonstantin Zhuravlyov!16 = !{!"none", !"none"}
7297a663b6SKonstantin Zhuravlyov!17 = !{!"int*", !"int*"}
7397a663b6SKonstantin Zhuravlyov!18 = !{!"", !""}
7497a663b6SKonstantin Zhuravlyov!19 = !DIExpression(DW_OP_constu, 1, DW_OP_swap, DW_OP_xderef)
7597a663b6SKonstantin Zhuravlyov!20 = !DILocation(line: 1, column: 33, scope: !7)
7697a663b6SKonstantin Zhuravlyov!21 = !DILocation(line: 1, column: 48, scope: !7)
7797a663b6SKonstantin Zhuravlyov!22 = !DILocation(line: 2, column: 7, scope: !23)
7897a663b6SKonstantin Zhuravlyov!23 = distinct !DILexicalBlock(scope: !7, file: !1, line: 2, column: 7)
7997a663b6SKonstantin Zhuravlyov!24 = !{!25, !25, i64 0}
8097a663b6SKonstantin Zhuravlyov!25 = !{!"int", !26, i64 0}
8197a663b6SKonstantin Zhuravlyov!26 = !{!"omnipotent char", !27, i64 0}
8297a663b6SKonstantin Zhuravlyov!27 = !{!"Simple C/C++ TBAA"}
8397a663b6SKonstantin Zhuravlyov!28 = !DILocation(line: 2, column: 10, scope: !23)
8497a663b6SKonstantin Zhuravlyov!29 = !DILocation(line: 2, column: 7, scope: !7)
8597a663b6SKonstantin Zhuravlyov!30 = !DILocation(line: 3, column: 8, scope: !31)
8697a663b6SKonstantin Zhuravlyov!31 = distinct !DILexicalBlock(scope: !23, file: !1, line: 2, column: 16)
8797a663b6SKonstantin Zhuravlyov!32 = !DILocation(line: 5, column: 7, scope: !33)
8897a663b6SKonstantin Zhuravlyov!33 = distinct !DILexicalBlock(scope: !7, file: !1, line: 5, column: 7)
8997a663b6SKonstantin Zhuravlyov!34 = !DILocation(line: 4, column: 3, scope: !31)
9097a663b6SKonstantin Zhuravlyov!35 = !DILocation(line: 5, column: 10, scope: !33)
9197a663b6SKonstantin Zhuravlyov!36 = !DILocation(line: 5, column: 7, scope: !7)
9297a663b6SKonstantin Zhuravlyov!37 = !DILocation(line: 6, column: 8, scope: !38)
9397a663b6SKonstantin Zhuravlyov!38 = distinct !DILexicalBlock(scope: !33, file: !1, line: 5, column: 16)
9497a663b6SKonstantin Zhuravlyov!39 = !DILocation(line: 7, column: 3, scope: !38)
9597a663b6SKonstantin Zhuravlyov!40 = !DILocation(line: 8, column: 1, scope: !7)
96