[mlir][llvm] Make DINamespace name optional
authorChristian Ulmann <christian.ulmann@nextsilicon.com>
Wed, 29 Mar 2023 09:02:36 +0000 (09:02 +0000)
committerChristian Ulmann <christian.ulmann@nextsilicon.com>
Wed, 29 Mar 2023 10:17:27 +0000 (10:17 +0000)
This commit makes the name of a DINamespace optional to enable modeling
of anonymous namespaces.

Reviewed By: gysit

Differential Revision: https://reviews.llvm.org/D147125

mlir/include/mlir/Dialect/LLVMIR/LLVMAttrDefs.td
mlir/test/Dialect/LLVMIR/debuginfo.mlir

index 9035199..937e7fc 100644 (file)
@@ -476,7 +476,7 @@ def LLVM_DISubprogramAttr : LLVM_Attr<"DISubprogram", "di_subprogram",
 def LLVM_DINamespaceAttr : LLVM_Attr<"DINamespace", "di_namespace",
                                       /*traits=*/[], "DIScopeAttr"> {
   let parameters = (ins
-    "StringAttr":$name,
+    OptionalParameter<"StringAttr">:$name,
     OptionalParameter<"DIScopeAttr">:$scope,
     "bool":$exportSymbols
   );
index f7517b2..aec40ad 100644 (file)
   name = "nested", scope = #toplevel_namespace, exportSymbols = false
 >
 
+// CHECK-DAG: #[[ANONYMOUS_NS:.*]] = #llvm.di_namespace<scope = #[[FILE]], exportSymbols = false>
+#anonymous_namespace = #llvm.di_namespace<
+  scope = #file,
+  exportSymbols = false
+>
+
 // CHECK-DAG: #[[COMP2:.*]] = #llvm.di_composite_type<tag = DW_TAG_class_type, name = "class_name", file = #[[FILE]], scope = #[[NESTED]], flags = "TypePassByReference|NonTrivial">
 #comp2 = #llvm.di_composite_type<
   tag = DW_TAG_class_type, name = "class_name", file = #file, scope = #nested_namespace,
@@ -83,9 +89,9 @@
   callingConvention = DW_CC_normal
 >
 
-// CHECK-DAG: #[[SP0:.*]] = #llvm.di_subprogram<compileUnit = #[[CU]], scope = #[[FILE]], name = "addr", linkageName = "addr", file = #[[FILE]], line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = #[[SPTYPE0]]>
+// CHECK-DAG: #[[SP0:.*]] = #llvm.di_subprogram<compileUnit = #[[CU]], scope = #[[ANONYMOUS_NS]], name = "addr", linkageName = "addr", file = #[[FILE]], line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = #[[SPTYPE0]]>
 #sp0 = #llvm.di_subprogram<
-  compileUnit = #cu, scope = #file, name = "addr", linkageName = "addr",
+  compileUnit = #cu, scope = #anonymous_namespace, name = "addr", linkageName = "addr",
   file = #file, line = 3, scopeLine = 3, subprogramFlags = "Definition|Optimized", type = #spType0
 >