Skip to content

Commit

Permalink
LangRef: Document the allowed metadata dropping transforms.
Browse files Browse the repository at this point in the history
Document the current practice regarding dropping metadata on modules,
functions and global variables.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293101 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
pcc committed Jan 25, 2017
1 parent 0702b34 commit 39a5a41
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions docs/LangRef.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3941,15 +3941,28 @@ to the ``add`` instruction using the ``!dbg`` identifier:
%indvar.next = add i64 %indvar, 1, !dbg !21
Metadata can also be attached to a function definition. Here metadata ``!22``
is attached to the ``foo`` function using the ``!dbg`` identifier:
Metadata can also be attached to a function or a global variable. Here metadata
``!22`` is attached to the ``f1`` and ``f2 functions, and the globals ``g1``
and ``g2`` using the ``!dbg`` identifier:

.. code-block:: llvm
define void @foo() !dbg !22 {
declare !dbg !22 void @f1()
define void @f2() !dbg !22 {
ret void
}
@g1 = global i32 0, !dbg !22
@g2 = external global i32, !dbg !22
A transformation is required to drop any metadata attachment that it does not
know or know it can't preserve. Currently there is an exception for metadata
attachment to globals for ``!type`` and ``!absolute_symbol`` which can't be
unconditionally dropped unless the global is itself deleted.

Metadata attached to a module using named metadata may not be dropped, with
the exception of debug metadata (named metadata with the name ``!llvm.dbg.*``).

More information about specific metadata nodes recognized by the
optimizers and code generator is found below.

Expand Down

0 comments on commit 39a5a41

Please sign in to comment.