Skip to content

Commit e38e0bd

Browse files
authored
[mlir] Add splitDebugFilename field in DIComplileUnitAttr. (#160704)
Mostly mechanical changes to add the missing field.
1 parent 02746f8 commit e38e0bd

File tree

9 files changed

+27
-20
lines changed

9 files changed

+27
-20
lines changed

flang/lib/Optimizer/Transforms/AddDebugInfo.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,9 @@ void AddDebugInfoPass::runOnOperation() {
694694
mlir::LLVM::DICompileUnitAttr cuAttr = mlir::LLVM::DICompileUnitAttr::get(
695695
mlir::DistinctAttr::create(mlir::UnitAttr::get(context)),
696696
llvm::dwarf::getLanguage("DW_LANG_Fortran95"), fileAttr, producer,
697-
isOptimized, debugLevel);
697+
isOptimized, debugLevel,
698+
/*nameTableKind=*/mlir::LLVM::DINameTableKind::Default,
699+
/*splitDebugFilename=*/mlir::StringAttr());
698700

699701
module.walk([&](mlir::func::FuncOp funcOp) {
700702
handleFuncOp(funcOp, fileAttr, cuAttr, typeGen, &symbolTable);

mlir/include/mlir-c/Dialect/LLVM.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ typedef enum MlirLLVMDINameTableKind MlirLLVMDINameTableKind;
306306
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompileUnitAttrGet(
307307
MlirContext ctx, MlirAttribute id, unsigned int sourceLanguage,
308308
MlirAttribute file, MlirAttribute producer, bool isOptimized,
309-
MlirLLVMDIEmissionKind emissionKind, MlirLLVMDINameTableKind nameTableKind);
309+
MlirLLVMDIEmissionKind emissionKind, MlirLLVMDINameTableKind nameTableKind,
310+
MlirAttribute splitDebugFilename);
310311

311312
/// Creates a LLVM DIFlags attribute.
312313
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx,

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -425,17 +425,19 @@ def LLVM_DICompileUnitAttr : LLVM_Attr<"DICompileUnit", "di_compile_unit",
425425
OptionalParameter<"StringAttr">:$producer,
426426
"bool":$isOptimized,
427427
"DIEmissionKind":$emissionKind,
428-
OptionalParameter<"DINameTableKind">:$nameTableKind
428+
OptionalParameter<"DINameTableKind">:$nameTableKind,
429+
OptionalParameter<"StringAttr">:$splitDebugFilename
429430
);
430431
let builders = [
431432
AttrBuilderWithInferredContext<(ins
432433
"DistinctAttr":$id, "unsigned":$sourceLanguage, "DIFileAttr":$file,
433434
"StringAttr":$producer, "bool":$isOptimized,
434435
"DIEmissionKind":$emissionKind,
435-
CArg<"DINameTableKind", "DINameTableKind::Default">:$nameTableKind
436+
CArg<"DINameTableKind", "DINameTableKind::Default">:$nameTableKind,
437+
CArg<"StringAttr", "{}">:$splitDebugFilename
436438
), [{
437439
return $_get(id.getContext(), id, sourceLanguage, file, producer,
438-
isOptimized, emissionKind, nameTableKind);
440+
isOptimized, emissionKind, nameTableKind, splitDebugFilename);
439441
}]>
440442
];
441443
let assemblyFormat = "`<` struct(params) `>`";

mlir/lib/CAPI/Dialect/LLVM.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -253,17 +253,16 @@ MlirAttribute mlirLLVMDIFileAttrGet(MlirContext ctx, MlirAttribute name,
253253
cast<StringAttr>(unwrap(directory))));
254254
}
255255

256-
MlirAttribute
257-
mlirLLVMDICompileUnitAttrGet(MlirContext ctx, MlirAttribute id,
258-
unsigned int sourceLanguage, MlirAttribute file,
259-
MlirAttribute producer, bool isOptimized,
260-
MlirLLVMDIEmissionKind emissionKind,
261-
MlirLLVMDINameTableKind nameTableKind) {
256+
MlirAttribute mlirLLVMDICompileUnitAttrGet(
257+
MlirContext ctx, MlirAttribute id, unsigned int sourceLanguage,
258+
MlirAttribute file, MlirAttribute producer, bool isOptimized,
259+
MlirLLVMDIEmissionKind emissionKind, MlirLLVMDINameTableKind nameTableKind,
260+
MlirAttribute splitDebugFilename) {
262261
return wrap(DICompileUnitAttr::get(
263262
unwrap(ctx), cast<DistinctAttr>(unwrap(id)), sourceLanguage,
264263
cast<DIFileAttr>(unwrap(file)), cast<StringAttr>(unwrap(producer)),
265-
isOptimized, DIEmissionKind(emissionKind),
266-
DINameTableKind(nameTableKind)));
264+
isOptimized, DIEmissionKind(emissionKind), DINameTableKind(nameTableKind),
265+
cast<StringAttr>(unwrap(splitDebugFilename))));
267266
}
268267

269268
MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, uint64_t value) {

mlir/lib/Target/LLVMIR/DebugImporter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ DICompileUnitAttr DebugImporter::translateImpl(llvm::DICompileUnit *node) {
6161
return DICompileUnitAttr::get(
6262
context, getOrCreateDistinctID(node), node->getSourceLanguage(),
6363
translate(node->getFile()), getStringAttrOrNull(node->getRawProducer()),
64-
node->isOptimized(), emissionKind.value(), nameTableKind.value());
64+
node->isOptimized(), emissionKind.value(), nameTableKind.value(),
65+
getStringAttrOrNull(node->getRawSplitDebugFilename()));
6566
}
6667

6768
DICompositeTypeAttr DebugImporter::translateImpl(llvm::DICompositeType *node) {

mlir/lib/Target/LLVMIR/DebugTranslation.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ llvm::DICompileUnit *DebugTranslation::translateImpl(DICompileUnitAttr attr) {
124124
attr.getSourceLanguage(), translate(attr.getFile()),
125125
attr.getProducer() ? attr.getProducer().getValue() : "",
126126
attr.getIsOptimized(),
127-
/*Flags=*/"", /*RV=*/0, /*SplitName=*/{},
127+
/*Flags=*/"", /*RV=*/0,
128+
attr.getSplitDebugFilename() ? attr.getSplitDebugFilename().getValue()
129+
: "",
128130
static_cast<llvm::DICompileUnit::DebugEmissionKind>(
129131
attr.getEmissionKind()),
130132
0, true, false,

mlir/test/CAPI/llvm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ static void testDebugInfoAttributes(MlirContext ctx) {
270270

271271
MlirAttribute compile_unit = mlirLLVMDICompileUnitAttrGet(
272272
ctx, id, LLVMDWARFSourceLanguageC99, file, foo, false,
273-
MlirLLVMDIEmissionKindFull, MlirLLVMDINameTableKindDefault);
273+
MlirLLVMDIEmissionKindFull, MlirLLVMDINameTableKindDefault, bar);
274274

275275
// CHECK: #llvm.di_compile_unit<{{.*}}>
276276
mlirAttributeDump(compile_unit);

mlir/test/Target/LLVMIR/Import/debug-info.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ define void @composite_type() !dbg !3 {
215215
; // -----
216216

217217
; CHECK-DAG: #[[FILE:.+]] = #llvm.di_file<"debug-info.ll" in "/">
218-
; CHECK-DAG: #[[CU:.+]] = #llvm.di_compile_unit<id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #[[FILE]], isOptimized = false, emissionKind = None, nameTableKind = None>
218+
; CHECK-DAG: #[[CU:.+]] = #llvm.di_compile_unit<id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #[[FILE]], isOptimized = false, emissionKind = None, nameTableKind = None, splitDebugFilename = "test.dwo">
219219
; Verify an empty subroutine types list is supported.
220220
; CHECK-DAG: #[[SP_TYPE:.+]] = #llvm.di_subroutine_type<callingConvention = DW_CC_normal>
221221
; CHECK-DAG: #[[SP:.+]] = #llvm.di_subprogram<id = distinct[{{.*}}]<>, compileUnit = #[[CU]], scope = #[[FILE]], name = "subprogram", linkageName = "subprogram", file = #[[FILE]], line = 42, scopeLine = 42, subprogramFlags = Definition, type = #[[SP_TYPE]]>
@@ -227,7 +227,7 @@ define void @subprogram() !dbg !3 {
227227
!llvm.dbg.cu = !{!1}
228228
!llvm.module.flags = !{!0}
229229
!0 = !{i32 2, !"Debug Info Version", i32 3}
230-
!1 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, nameTableKind: None)
230+
!1 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, nameTableKind: None, splitDebugFilename: "test.dwo")
231231
!2 = !DIFile(filename: "debug-info.ll", directory: "/")
232232
!3 = distinct !DISubprogram(name: "subprogram", linkageName: "subprogram", scope: !2, file: !2, line: 42, scopeLine: 42, spFlags: DISPFlagDefinition, unit: !1, type: !4)
233233
!4 = !DISubroutineType(cc: DW_CC_normal, types: !5)

mlir/test/Target/LLVMIR/llvmir-debug.mlir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ llvm.func @func_no_debug() {
4343
#cu = #llvm.di_compile_unit<
4444
id = distinct[0]<>, sourceLanguage = DW_LANG_C, file = #file,
4545
producer = "MLIR", isOptimized = true, emissionKind = Full,
46-
nameTableKind = None
46+
nameTableKind = None, splitDebugFilename = "test.dwo"
4747
>
4848
#composite = #llvm.di_composite_type<
4949
tag = DW_TAG_structure_type, name = "composite", file = #file,
@@ -140,7 +140,7 @@ llvm.func @empty_types() {
140140
llvm.return
141141
} loc(fused<#sp1>["foo.mlir":2:1])
142142

143-
// CHECK: ![[CU_LOC:.*]] = distinct !DICompileUnit(language: DW_LANG_C, file: ![[CU_FILE_LOC:.*]], producer: "MLIR", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, nameTableKind: None)
143+
// CHECK: ![[CU_LOC:.*]] = distinct !DICompileUnit(language: DW_LANG_C, file: ![[CU_FILE_LOC:.*]], producer: "MLIR", isOptimized: true, runtimeVersion: 0, splitDebugFilename: "test.dwo", emissionKind: FullDebug, nameTableKind: None)
144144
// CHECK: ![[CU_FILE_LOC]] = !DIFile(filename: "foo.mlir", directory: "/test/")
145145

146146
// CHECK: ![[FUNC_LOC]] = distinct !DISubprogram(name: "func_with_debug", linkageName: "func_with_debug", scope: ![[NESTED_NAMESPACE:.*]], file: ![[CU_FILE_LOC]], line: 3, type: ![[FUNC_TYPE:.*]], scopeLine: 3, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: ![[CU_LOC]])

0 commit comments

Comments
 (0)