================ @@ -66,12 +66,28 @@ static void addScopeToFunction(LLVM::LLVMFuncOp llvmFunc, LLVM::DISubroutineTypeAttr::get(context, llvm::dwarf::DW_CC_normal, {}); StringAttr funcNameAttr = llvmFunc.getNameAttr(); - auto subprogramAttr = LLVM::DISubprogramAttr::get( - context, compileUnitAttr, fileAttr, funcNameAttr, funcNameAttr, fileAttr, - /*line=*/line, - /*scopeline=*/col, - LLVM::DISubprogramFlags::Definition | LLVM::DISubprogramFlags::Optimized, - subroutineTypeAttr); + mlir::LLVM::DISubprogramAttr subprogramAttr; + // Only definitions need a distinct identifier and a compilation unit. + if (!llvmFunc.isExternal()) { + auto id = DistinctAttr::create(UnitAttr::get(context)); + subprogramAttr = + LLVM::DISubprogramAttr::get(context, id, compileUnitAttr, fileAttr, + funcNameAttr, funcNameAttr, fileAttr, + /*line=*/line, + /*scopeline=*/col, + LLVM::DISubprogramFlags::Definition | + LLVM::DISubprogramFlags::Optimized, + subroutineTypeAttr); + } else { + subprogramAttr = LLVM::DISubprogramAttr::get( + context, DistinctAttr(), LLVM::DICompileUnitAttr(), fileAttr, + funcNameAttr, funcNameAttr, fileAttr, + /*line=*/line, + /*scopeline=*/col, + LLVM::DISubprogramFlags::Definition | + LLVM::DISubprogramFlags::Optimized, + subroutineTypeAttr); ---------------- gysit wrote:
nit: maybe consider hoisting the actual builder call outside the if else using some extra variables for the fields that differ? https://github.com/llvm/llvm-project/pull/77093 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits