[PATCH] D11636: Set address space when emitting debug info

Matt Arsenault Matthew.Arsenault at amd.com
Thu Jul 30 00:35:10 PDT 2015


arsenm created this revision.
arsenm added a reviewer: echristo.
arsenm added a subscriber: llvm-commits.

http://reviews.llvm.org/D11636

Files:
  lib/CodeGen/CGDebugInfo.cpp
  test/CodeGenOpenCL/addrspace-debug-info.cl

Index: test/CodeGenOpenCL/addrspace-debug-info.cl
===================================================================
--- /dev/null
+++ test/CodeGenOpenCL/addrspace-debug-info.cl
@@ -0,0 +1,36 @@
+// RUN: %clang_cc1 -cl-std=CL2.0 -g -triple amdgcn-unknown-amdhsa -S -emit-llvm -o - %s | FileCheck %s
+
+// FIXME: generic pointer getting wrong address space.
+
+
+// CHECK-DAG: ![[GLOBALPTRTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: 64, align: 32, extraData: i32 1)
+// CHECK-DAG: ![[CONSTANTPTRTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: 64, align: 32, extraData: i32 2)
+// CHECK-DAG: ![[LOCALPTRTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: 32, align: 32, extraData: i32 3)
+// CHECK-DAG: ![[PRIVATEPTRTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: 32, align: 32)
+
+// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "globalptr_arg", arg: 1, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[GLOBALPTRTYPE]])
+// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "constantptr_arg", arg: 2, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[CONSTANTPTRTYPE]])
+// CHECK-DAG: !DILocalVariable(tag: DW_TAG_arg_variable, name: "localptr_arg", arg: 3, scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[LOCALPTRTYPE]])
+
+// CHECK-DAG: !DILocalVariable(tag: DW_TAG_auto_variable, name: "privateptr", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[PRIVATEPTRTYPE]]
+
+// FIXME: This should not be the same as the private pointer type.
+// CHECK-DAG: !DILocalVariable(tag: DW_TAG_auto_variable, name: "genericptr", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[PRIVATEPTRTYPE]]
+
+// CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "memberptr", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, baseType: ![[CONSTANTPTRTYPE]], size: 64, align: 32)
+
+kernel void ptr_types_debuginfo(global int* globalptr_arg,
+                                constant int* constantptr_arg,
+                                local int* localptr_arg)
+{
+    private int* privateptr = 0;
+    int* genericptr = 0;
+}
+
+struct Foo {
+  constant int* memberptr;
+};
+
+// FIXME: Address space for global variable seems to not be represented?
+constant int gconstint = 2;
+constant struct Foo globalstruct = { &gconstint };
Index: lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- lib/CodeGen/CGDebugInfo.cpp
+++ lib/CodeGen/CGDebugInfo.cpp
@@ -670,7 +670,7 @@
   uint64_t Align = CGM.getContext().getTypeAlign(Ty);
 
   return DBuilder.createPointerType(getOrCreateType(PointeeTy, Unit), Size,
-                                    Align);
+                                    Align, AS);
 }
 
 llvm::DIType *CGDebugInfo::getOrCreateStructPtrType(StringRef Name,
@@ -1351,7 +1351,7 @@
   llvm::DIType *SubTy = DBuilder.createSubroutineType(Unit, SElements);
   unsigned Size = Context.getTypeSize(Context.VoidPtrTy);
   llvm::DIType *vtbl_ptr_type =
-      DBuilder.createPointerType(SubTy, Size, 0, "__vtbl_ptr_type");
+    DBuilder.createPointerType(SubTy, Size, 0, 0, "__vtbl_ptr_type");
   VTablePtrType = DBuilder.createPointerType(vtbl_ptr_type, Size);
   return VTablePtrType;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11636.31005.patch
Type: text/x-patch
Size: 3395 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150730/39622e8f/attachment.bin>


More information about the llvm-commits mailing list