Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
32d84f8
Add DIBuilder wrapper with lifecycle management.
maleadt Apr 24, 2026
f03148f
Add file!, compileunit!, dimodule!, and namespace! factories.
maleadt Apr 24, 2026
4f664a9
Add DILexicalBlock, DILexicalBlockFile, and their factories.
maleadt Apr 24, 2026
59c4a79
Add DIBuilder type-creation factories.
maleadt Apr 24, 2026
f9b1ec8
Add subprogram!, variable, and expression factories.
maleadt Apr 24, 2026
4ba3c7e
Add dbg.declare/dbg.value insertion and Instruction debuglocation.
maleadt Apr 24, 2026
cc3780c
Add imported-entity, macro, and label factories.
maleadt Apr 24, 2026
be51712
Add temporary MDNode, RAUW, and replace helpers.
maleadt Apr 24, 2026
590813c
Close remaining LLVM-C DebugInfo.h gaps.
maleadt Apr 24, 2026
0dbb35e
Auto-finalize DIBuilder on dispose.
maleadt Apr 24, 2026
c3ea4d0
Clarify that finalize_subprogram! is strictly an early-out.
maleadt Apr 24, 2026
fad46d1
Move subprogram!'s linkage_name and scope_line to kwargs.
maleadt Apr 24, 2026
a5fb9ad
Add named DW_TAG convenience wrappers for common qualifiers.
maleadt Apr 24, 2026
8f6a971
Split compound DIBuilder factory names with underscores.
maleadt Apr 24, 2026
304104b
Skip DIBuilder finalize when no compile unit was registered.
maleadt Apr 24, 2026
93f25ed
Rename compile_unit!'s flags kwarg to cmdline.
maleadt Apr 24, 2026
b2665b0
Version-gate object_pointer_type! for the new LLVM 20 signature.
maleadt Apr 24, 2026
78aa93b
Tighten dbg-record/intrinsic inserters to DILocalVariable.
maleadt Apr 24, 2026
b0e800f
Note the untracked-SP no-op in finalize_subprogram! docstring.
maleadt Apr 24, 2026
caa642f
Split subroutine_type! return and parameter types.
maleadt Apr 24, 2026
eaa69a4
Require a Constant value in static_member_type!.
maleadt Apr 24, 2026
eea18ba
Require a scope when constructing a DILocation.
maleadt Apr 24, 2026
e48ff95
Harden DIBuilder tests for assertion-enabled LLVM.
maleadt Apr 24, 2026
42babb4
Fix for LLVM <17.
maleadt Apr 24, 2026
bf7ecd6
Preserve input kind in artificial/object-pointer type clones.
maleadt Apr 24, 2026
a64931a
Add DIObjCProperty and return it from objc_property!.
maleadt Apr 24, 2026
7fc1224
Lift docstrings out of @static version gates.
maleadt Apr 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 172 additions & 0 deletions docs/src/lib/metadata.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@ push!(::NamedMDNode, ::MDNode)
DINode
```

### Builder

```@docs
DIBuilder
DIBuilder(::LLVM.Module)
dispose(::DIBuilder)
LLVM.finalize!(::DIBuilder)
LLVM.finalize_subprogram!
```

### Location information

```@docs
Expand Down Expand Up @@ -73,36 +83,198 @@ DIFile
directory
filename
source
LLVM.file!
```

### Lexical Block

```@docs
LLVM.DILexicalBlock
LLVM.DILexicalBlockFile
LLVM.lexical_block!
LLVM.lexical_block_file!
```

### Module

```@docs
LLVM.DIModule
LLVM.dimodule!
```

### Namespace

```@docs
LLVM.DINamespace
LLVM.namespace!
```

### Type

```@docs
DIType
LLVM.DIBasicType
LLVM.DIDerivedType
LLVM.DICompositeType
LLVM.DISubroutineType
name(::DIType)
Base.sizeof(::DIType)
offset(::DIType)
line(::DIType)
flags(::DIType)
LLVM.align
LLVM.DIEnumerator
LLVM.DISubrange
```

Built-in factories for primitive types:

```@docs
LLVM.basic_type!
LLVM.unspecified_type!
LLVM.nullptr_type!
```

Derived types (pointers, qualifiers, members, inheritance, ...):

```@docs
LLVM.pointer_type!
LLVM.reference_type!
LLVM.lvalue_reference_type!
LLVM.rvalue_reference_type!
LLVM.typedef_type!
LLVM.qualified_type!
LLVM.const_type!
LLVM.volatile_type!
LLVM.artificial_type!
LLVM.object_pointer_type!
LLVM.member_type!
LLVM.bitfield_member_type!
LLVM.static_member_type!
LLVM.member_pointer_type!
LLVM.inheritance!
```

Composite types:

```@docs
LLVM.struct_type!
LLVM.union_type!
LLVM.class_type!
LLVM.array_type!
LLVM.vector_type!
LLVM.enumerator!
LLVM.enumeration_type!
LLVM.forward_decl!
LLVM.replaceable_composite_type!
LLVM.get_or_create_subrange!
```

Subroutine types:

```@docs
LLVM.subroutine_type!
```

Array-node helpers:

```@docs
LLVM.get_or_create_array!
LLVM.get_or_create_type_array!
```

Objective-C:

```@docs
DIObjCProperty
LLVM.objc_ivar!
LLVM.objc_property!
```

### Subprogram

```@docs
DISubProgram
line(::DISubProgram)
LLVM.subprogram!(::DIBuilder, ::DIScope, ::AbstractString, ::DIFile, ::Integer, ::LLVM.DISubroutineType)
```

### Variables

Factories for local variables and parameters:

```@docs
LLVM.auto_variable!
LLVM.parameter_variable!
```

### Expressions

```@docs
LLVM.DIExpression
LLVM.DIGlobalVariableExpression
LLVM.expression!
LLVM.constant_value_expression!
LLVM.variable
LLVM.expression
LLVM.global_variable_expression!
LLVM.temp_global_variable_fwd_decl!
```

### Imported entities

```@docs
LLVM.DIImportedEntity
LLVM.imported_module_from_namespace!
LLVM.imported_module_from_alias!
LLVM.imported_module_from_module!
LLVM.imported_declaration!
```

### Macros

```@docs
LLVM.DIMacro
LLVM.DIMacroFile
LLVM.macro!
LLVM.temp_macro_file!
```

### Instruction-level insertion

The `declare_*!` / `value_*!` methods return an `Instruction` on LLVM ≤ 18
(legacy `llvm.dbg.*` intrinsics) and a `LLVM.DbgRecord` on LLVM ≥ 19
(the new `#dbg_*` record format).

```@docs
LLVM.declare_before!
LLVM.declare_at_end!
LLVM.value_before!
LLVM.value_at_end!
LLVM.debuglocation(::Instruction)
LLVM.debuglocation!(::Instruction, ::DILocation)
```

### Compile Unit

```@docs
DICompileUnit
LLVM.compile_unit!
```

### Mutation helpers

```@docs
LLVM.temporary_mdnode
LLVM.dispose_temporary
LLVM.replace_uses!(::LLVM.Metadata, ::LLVM.Metadata)
```

### Other

```@docs
DEBUG_METADATA_VERSION
LLVM.debug_metadata_version
strip_debuginfo!
subprogram(::LLVM.Function)
subprogram!
Expand Down
Loading
Loading