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