Reland "[mlir][llvm] Add an explicit void type debug info attribute."
authorTobias Gysi <tobias.gysi@nextsilicon.com>
Fri, 13 Jan 2023 09:14:21 +0000 (10:14 +0100)
committerTobias Gysi <tobias.gysi@nextsilicon.com>
Fri, 13 Jan 2023 09:22:55 +0000 (10:22 +0100)
commitf61f42b9d63d3e6b1c8f45e68a31d467f3627f75
tree6e7e1a2d6e54629ff2d95d9b57205291dddec455
parent16f9451b07619cd84e0b88ff17ca2b27a2c1f9cc
Reland "[mlir][llvm] Add an explicit void type debug info attribute."

Previously, the DISubroutineType attribute used an optional result
parameter and an optional argument types array to model the subroutine
signature. LLVM IR debug metadata, on the other hand, has one types
list whose first entry maps to the result type. That entry may be
null to model a void result type. The type list may also be entirely
empty not specifying any type information. The latter is problematic
since the current DISubroutineType attribute cannot express it.

The revision changes DISubroutineTypeAttr to closely follow the
LLVM metadata design. In particular, it uses a single types parameter
array to model the subroutine signature and introduces an explicit
DIVoidResultTypeAttr to model the null entries.

Reviewed By: Dinistro

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

This reverts commit 81f57b6
and relands commit a960547

Fixes flang build and drop_begin on an empty array ref.
12 files changed:
flang/lib/Optimizer/Transforms/AddDebugFoundation.cpp
flang/test/Transforms/debug-line-table.fir
mlir/include/mlir/Dialect/LLVMIR/LLVMAttrDefs.td
mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
mlir/lib/Target/LLVMIR/DebugImporter.cpp
mlir/lib/Target/LLVMIR/DebugTranslation.cpp
mlir/lib/Target/LLVMIR/DebugTranslation.h
mlir/test/Dialect/LLVMIR/debuginfo.mlir
mlir/test/Dialect/LLVMIR/invalid.mlir
mlir/test/Target/LLVMIR/Import/debug-info.ll
mlir/test/Target/LLVMIR/llvmir-debug.mlir