diff options
Diffstat (limited to 'compiler/GHC/Llvm/MetaData.hs')
-rw-r--r-- | compiler/GHC/Llvm/MetaData.hs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/compiler/GHC/Llvm/MetaData.hs b/compiler/GHC/Llvm/MetaData.hs index b485d94dbe..f4adff45bb 100644 --- a/compiler/GHC/Llvm/MetaData.hs +++ b/compiler/GHC/Llvm/MetaData.hs @@ -12,8 +12,8 @@ import GHC.Utils.Outputable -- -- The LLVM metadata feature is poorly documented but roughly follows the -- following design: --- * Metadata can be constructed in a few different ways (See below). --- * After which it can either be attached to LLVM statements to pass along +-- - Metadata can be constructed in a few different ways (See below). +-- - After which it can either be attached to LLVM statements to pass along -- extra information to the optimizer and code generator OR specifically named -- metadata has an affect on the whole module (i.e., linking behaviour). -- @@ -21,18 +21,18 @@ import GHC.Utils.Outputable -- # Constructing metadata -- Metadata comes largely in three forms: -- --- * Metadata expressions -- these are the raw metadata values that encode +-- - Metadata expressions -- these are the raw metadata values that encode -- information. They consist of metadata strings, metadata nodes, regular -- LLVM values (both literals and references to global variables) and -- metadata expressions (i.e., recursive data type). Some examples: -- !{ !"hello", !0, i32 0 } -- !{ !1, !{ i32 0 } } -- --- * Metadata nodes -- global metadata variables that attach a metadata +-- - Metadata nodes -- global metadata variables that attach a metadata -- expression to a number. For example: -- !0 = !{ [<metadata expressions>] !} -- --- * Named metadata -- global metadata variables that attach a metadata nodes +-- - Named metadata -- global metadata variables that attach a metadata nodes -- to a name. Used ONLY to communicated module level information to LLVM -- through a meaningful name. For example: -- !llvm.module.linkage = !{ !0, !1 } @@ -41,7 +41,7 @@ import GHC.Utils.Outputable -- # Using Metadata -- Using metadata depends on the form it is in: -- --- * Attach to instructions -- metadata can be attached to LLVM instructions +-- - Attach to instructions -- metadata can be attached to LLVM instructions -- using a specific reference as follows: -- %l = load i32* @glob, !nontemporal !10 -- %m = load i32* @glob, !nontemporal !{ i32 0, !{ i32 0 } } @@ -49,12 +49,12 @@ import GHC.Utils.Outputable -- Refer to LLVM documentation for which instructions take metadata and its -- meaning. -- --- * As arguments -- llvm functions can take metadata as arguments, for +-- - As arguments -- llvm functions can take metadata as arguments, for -- example: -- call void @llvm.dbg.value(metadata !{ i32 0 }, i64 0, metadata !1) -- As with instructions, only metadata nodes or expressions can be attached. -- --- * As a named metadata -- Here the metadata is simply declared in global +-- - As a named metadata -- Here the metadata is simply declared in global -- scope using a specific name to communicate module level information to LLVM. -- For example: -- !llvm.module.linkage = !{ !0, !1 } @@ -82,8 +82,8 @@ data MetaAnnot = MetaAnnot LMString MetaExpr -- | Metadata declarations. Metadata can only be declared in global scope. data MetaDecl -- | Named metadata. Only used for communicating module information to - -- LLVM. ('!name = !{ [!<n>] }' form). + -- LLVM. ('!name = !{ [!\<n>] }' form). = MetaNamed !LMString [MetaId] -- | Metadata node declaration. - -- ('!0 = metadata !{ <metadata expression> }' form). + -- ('!0 = metadata !{ \<metadata expression> }' form). | MetaUnnamed !MetaId !MetaExpr |