xref: /llvm-project/clang/test/CodeGenOpenCL/amdgpu-debug-info-pointer-address-space.cl (revision efc063b621ea0c4d1e452bcade62f7fc7e1cc937)
1*efc063b6SYaxun (Sam) Liu// REQUIRES: amdgpu-registered-target
24593e413SMatt Arsenault// RUN: %clang -cl-std=CL2.0 -emit-llvm -g -O0 -S -nogpulib -target amdgcn-amd-amdhsa -mcpu=fiji -o - %s | FileCheck %s
34593e413SMatt Arsenault// RUN: %clang -cl-std=CL2.0 -emit-llvm -g -O0 -S -nogpulib -target amdgcn-amd-amdhsa-opencl -mcpu=fiji -o - %s | FileCheck %s
4d1ba16e7SKonstantin Zhuravlyov
5d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_NONE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}})
6d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_LOCAL:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 2)
7d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_PRIVATE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 1)
8d1ba16e7SKonstantin Zhuravlyov
9d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
10d1ba16e7SKonstantin Zhuravlyovglobal int *FileVar0;
11d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
12d1ba16e7SKonstantin Zhuravlyovconstant int *FileVar1;
13d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar2", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: false, isDefinition: true)
14d1ba16e7SKonstantin Zhuravlyovlocal int *FileVar2;
15d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar3", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: false, isDefinition: true)
16d1ba16e7SKonstantin Zhuravlyovprivate int *FileVar3;
17d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar4", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
18d1ba16e7SKonstantin Zhuravlyovint *FileVar4;
19d1ba16e7SKonstantin Zhuravlyov
20d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar5", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
21d1ba16e7SKonstantin Zhuravlyovglobal int *global FileVar5;
22d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar6", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
23d1ba16e7SKonstantin Zhuravlyovconstant int *global FileVar6;
24d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar7", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: false, isDefinition: true)
25d1ba16e7SKonstantin Zhuravlyovlocal int *global FileVar7;
26d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar8", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: false, isDefinition: true)
27d1ba16e7SKonstantin Zhuravlyovprivate int *global FileVar8;
28d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar9", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
29d1ba16e7SKonstantin Zhuravlyovint *global FileVar9;
30d1ba16e7SKonstantin Zhuravlyov
31d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar10", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
32d1ba16e7SKonstantin Zhuravlyovglobal int *constant FileVar10 = 0;
33d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar11", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
34d1ba16e7SKonstantin Zhuravlyovconstant int *constant FileVar11 = 0;
35d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar12", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: false, isDefinition: true)
36d1ba16e7SKonstantin Zhuravlyovlocal int *constant FileVar12 = 0;
37d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar13", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: false, isDefinition: true)
38d1ba16e7SKonstantin Zhuravlyovprivate int *constant FileVar13 = 0;
39d1ba16e7SKonstantin Zhuravlyov// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar14", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: false, isDefinition: true)
40d1ba16e7SKonstantin Zhuravlyovint *constant FileVar14 = 0;
41d1ba16e7SKonstantin Zhuravlyov
42d1ba16e7SKonstantin Zhuravlyovkernel void kernel1(
43d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DILocalVariable(name: "KernelArg0", arg: {{[0-9]+}}, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
44d1ba16e7SKonstantin Zhuravlyov    global int *KernelArg0,
45d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DILocalVariable(name: "KernelArg1", arg: {{[0-9]+}}, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
46d1ba16e7SKonstantin Zhuravlyov    constant int *KernelArg1,
47d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DILocalVariable(name: "KernelArg2", arg: {{[0-9]+}}, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]])
48d1ba16e7SKonstantin Zhuravlyov    local int *KernelArg2) {
49d1ba16e7SKonstantin Zhuravlyov  private int *Tmp0;
50d1ba16e7SKonstantin Zhuravlyov  int *Tmp1;
51d1ba16e7SKonstantin Zhuravlyov
52d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
53d1ba16e7SKonstantin Zhuravlyov  global int *FuncVar0 = KernelArg0;
54d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
55d1ba16e7SKonstantin Zhuravlyov  constant int *FuncVar1 = KernelArg1;
56d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar2", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]])
57d1ba16e7SKonstantin Zhuravlyov  local int *FuncVar2 = KernelArg2;
58d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar3", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]])
59d1ba16e7SKonstantin Zhuravlyov  private int *FuncVar3 = Tmp0;
60d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar4", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
61d1ba16e7SKonstantin Zhuravlyov  int *FuncVar4 = Tmp1;
62d1ba16e7SKonstantin Zhuravlyov
634f33b3d3SYaxun Liu  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar5", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
644f33b3d3SYaxun Liu  global int *constant FuncVar5 = 0;
654f33b3d3SYaxun Liu  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar6", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
664f33b3d3SYaxun Liu  constant int *constant FuncVar6 = 0;
674f33b3d3SYaxun Liu  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar7", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: true, isDefinition: true)
684f33b3d3SYaxun Liu  local int *constant FuncVar7 = 0;
694f33b3d3SYaxun Liu  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar8", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: true, isDefinition: true)
704f33b3d3SYaxun Liu  private int *constant FuncVar8 = 0;
714f33b3d3SYaxun Liu  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar9", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
724f33b3d3SYaxun Liu  int *constant FuncVar9 = 0;
73d1ba16e7SKonstantin Zhuravlyov
74d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar10", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
75d1ba16e7SKonstantin Zhuravlyov  global int *local FuncVar10; FuncVar10 = KernelArg0;
76d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar11", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
77d1ba16e7SKonstantin Zhuravlyov  constant int *local FuncVar11; FuncVar11 = KernelArg1;
78d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar12", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: true, isDefinition: true)
79d1ba16e7SKonstantin Zhuravlyov  local int *local FuncVar12; FuncVar12 = KernelArg2;
80d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar13", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: true, isDefinition: true)
81d1ba16e7SKonstantin Zhuravlyov  private int *local FuncVar13; FuncVar13 = Tmp0;
82d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: distinct !DIGlobalVariable(name: "FuncVar14", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]], isLocal: true, isDefinition: true)
83d1ba16e7SKonstantin Zhuravlyov  int *local FuncVar14; FuncVar14 = Tmp1;
84d1ba16e7SKonstantin Zhuravlyov
85d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar15", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
86d1ba16e7SKonstantin Zhuravlyov  global int *private FuncVar15 = KernelArg0;
87d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar16", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
88d1ba16e7SKonstantin Zhuravlyov  constant int *private FuncVar16 = KernelArg1;
89d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar17", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]])
90d1ba16e7SKonstantin Zhuravlyov  local int *private FuncVar17 = KernelArg2;
91d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar18", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]])
92d1ba16e7SKonstantin Zhuravlyov  private int *private FuncVar18 = Tmp0;
93d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DILocalVariable(name: "FuncVar19", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_NONE]])
94d1ba16e7SKonstantin Zhuravlyov  int *private FuncVar19 = Tmp1;
95d1ba16e7SKonstantin Zhuravlyov}
96d1ba16e7SKonstantin Zhuravlyov
97d1ba16e7SKonstantin Zhuravlyovstruct FileStruct0 {
98d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "StructMem0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}})
99d1ba16e7SKonstantin Zhuravlyov  global int *StructMem0;
100d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "StructMem1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}}, offset: {{[0-9]+}})
101d1ba16e7SKonstantin Zhuravlyov  constant int *StructMem1;
102d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "StructMem2", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_LOCAL]], size: {{[0-9]+}}, offset: {{[0-9]+}})
103d1ba16e7SKonstantin Zhuravlyov  local int *StructMem2;
104d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "StructMem3", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_PRIVATE]], size: {{[0-9]+}}, offset: {{[0-9]+}})
105d1ba16e7SKonstantin Zhuravlyov  private int *StructMem3;
106d1ba16e7SKonstantin Zhuravlyov  // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "StructMem4", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}}, offset: {{[0-9]+}})
107d1ba16e7SKonstantin Zhuravlyov  int *StructMem4;
108d1ba16e7SKonstantin Zhuravlyov};
109d1ba16e7SKonstantin Zhuravlyov
110d1ba16e7SKonstantin Zhuravlyovstruct FileStruct1 {
111d1ba16e7SKonstantin Zhuravlyov  union {
112d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "UnionMem0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}})
113d1ba16e7SKonstantin Zhuravlyov    global int *UnionMem0;
114d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "UnionMem1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}})
115d1ba16e7SKonstantin Zhuravlyov    constant int *UnionMem1;
116d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "UnionMem2", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_LOCAL]], size: {{[0-9]+}})
117d1ba16e7SKonstantin Zhuravlyov    local int *UnionMem2;
118d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "UnionMem3", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_PRIVATE]], size: {{[0-9]+}})
119d1ba16e7SKonstantin Zhuravlyov    private int *UnionMem3;
120d1ba16e7SKonstantin Zhuravlyov    // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "UnionMem4", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[DWARF_ADDRESS_SPACE_NONE]], size: {{[0-9]+}})
121d1ba16e7SKonstantin Zhuravlyov    int *UnionMem4;
122d1ba16e7SKonstantin Zhuravlyov  };
123d1ba16e7SKonstantin Zhuravlyov  long StructMem0;
124d1ba16e7SKonstantin Zhuravlyov};
125d1ba16e7SKonstantin Zhuravlyov
126d1ba16e7SKonstantin Zhuravlyovkernel void kernel2(global struct FileStruct0 *Kernel2Arg0,
127d1ba16e7SKonstantin Zhuravlyov                    global struct FileStruct1 *Kernel2Arg1) {}
128