From e6a5ddd0fabfa333c88ded0d7a69074d64758f3c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 15 Jan 2010 21:50:19 +0000 Subject: move "Metadata Nodes and Metadata Strings" section to the right place in the document and edit it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93559 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/LangRef.html | 70 +++++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 38 deletions(-) (limited to 'docs') diff --git a/docs/LangRef.html b/docs/LangRef.html index 9a563d6708..c028f6bfe5 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -924,9 +924,9 @@ define [linkage] [visibility]
-

Named metadata is a collection of metadata. Metadata - node and null are the only valid named metadata operands. - Metadata strings are not allowed as an named metadata operand.

+

Named metadata is a collection of metadata. Metadata + nodes (but not metadata strings) and null are the only valid operands for + a named metadata.

Syntax:
@@ -2335,41 +2335,6 @@ has undefined behavior.

- - - -
- -

Metadata provides a way to attach arbitrary data to the instruction - stream without affecting the behaviour of the program. There are two - metadata primitives, strings and nodes. All metadata has the - metadata type and is identified in syntax by a preceding exclamation - point ('!').

- -

A metadata string is a string surrounded by double quotes. It can contain - any character by escaping non-printable characters with "\xx" where "xx" is - the two digit hex code. For example: "!"test\00"".

- -

Metadata nodes are represented with notation similar to structure constants - (a comma separated list of elements, surrounded by braces and preceded by an - exclamation point). For example: "!{ metadata !"test\00", i32 - 10}".

- -

A metadata node will attempt to track changes to the values it holds. In the - event that a value is deleted, it will be replaced with a typeless - "null", such as "metadata !{null, i32 10}".

- -

A named metadata is a collection of - metadata nodes. For example: "!foo = metadata !{!4, !3}". - -

Optimizations may rely on metadata to provide additional information about - the program that isn't available in the instructions, or that isn't easily - computable. Similarly, the code generator may expect a certain metadata - format to be used to express debugging information.

- -
- @@ -2439,6 +2404,35 @@ call void asm alignstack "eieio", ""()
+ +
Metadata Nodes and Metadata + Strings +
+ +
+ +

LLVM IR allows metadata to be attached to instructions in the program that + can convey extra information about the code to the optimizers and code + generator. One example application of metadata is source-level debug + information. There are two metadata primitives: strings and nodes. All + metadata has the metadata type and is identified in syntax by a + preceding exclamation point ('!').

+ +

A metadata string is a string surrounded by double quotes. It can contain + any character by escaping non-printable characters with "\xx" where "xx" is + the two digit hex code. For example: "!"test\00"".

+ +

Metadata nodes are represented with notation similar to structure constants + (a comma separated list of elements, surrounded by braces and preceded by an + exclamation point). For example: "!{ metadata !"test\00", i32 + 10}". Metadata nodes can have any values as their operand.

+ +

A named metadata is a collection of + metadata nodes, which can be looked up in the module symbol table. For + example: "!foo = metadata !{!4, !3}". + +

+
-- cgit v1.2.3