Describe the global/local naming convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40890 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2007-08-07 14:34:28 +00:00
parent f48a88054a
commit 2c45228651

View File

@@ -296,25 +296,27 @@ the parser.</p>
<div class="doc_text"> <div class="doc_text">
<p>LLVM uses three different forms of identifiers, for different <p>LLVM identifiers come in two basic types: global and local. Global
purposes:</p> identifiers (functions, global variables) begin with the @ character. Local
identifiers (register names, types) begin with the % character. Additionally,
there are three different formats for identifiers, for different purposes:
<ol> <ol>
<li>Named values are represented as a string of characters with a '%' prefix. <li>Named values are represented as a string of characters with their prefix.
For example, %foo, %DivisionByZero, %a.really.long.identifier. The actual For example, %foo, @DivisionByZero, %a.really.long.identifier. The actual
regular expression used is '<tt>%[a-zA-Z$._][a-zA-Z$._0-9]*</tt>'. regular expression used is '<tt>[%@][a-zA-Z$._][a-zA-Z$._0-9]*</tt>'.
Identifiers which require other characters in their names can be surrounded Identifiers which require other characters in their names can be surrounded
with quotes. In this way, anything except a <tt>&quot;</tt> character can be used with quotes. In this way, anything except a <tt>&quot;</tt> character can
in a name.</li> be used in a named value.</li>
<li>Unnamed values are represented as an unsigned numeric value with a '%' <li>Unnamed values are represented as an unsigned numeric value with their
prefix. For example, %12, %2, %44.</li> prefix. For example, %12, @2, %44.</li>
<li>Constants, which are described in a <a href="#constants">section about <li>Constants, which are described in a <a href="#constants">section about
constants</a>, below.</li> constants</a>, below.</li>
</ol> </ol>
<p>LLVM requires that values start with a '%' sign for two reasons: Compilers <p>LLVM requires that values start with a prefix for two reasons: Compilers
don't need to worry about name clashes with reserved words, and the set of don't need to worry about name clashes with reserved words, and the set of
reserved words may be expanded in the future without penalty. Additionally, reserved words may be expanded in the future without penalty. Additionally,
unnamed identifiers allow a compiler to quickly come up with a temporary unnamed identifiers allow a compiler to quickly come up with a temporary
@@ -327,7 +329,7 @@ languages. There are keywords for different opcodes
'<tt><a href="#i_ret">ret</a></tt>', etc...), for primitive type names ('<tt><a '<tt><a href="#i_ret">ret</a></tt>', etc...), for primitive type names ('<tt><a
href="#t_void">void</a></tt>', '<tt><a href="#t_primitive">i32</a></tt>', etc...), href="#t_void">void</a></tt>', '<tt><a href="#t_primitive">i32</a></tt>', etc...),
and others. These reserved words cannot conflict with variable names, because and others. These reserved words cannot conflict with variable names, because
none of them start with a '%' character.</p> none of them start with a prefix character ('%' or '@').</p>
<p>Here is an example of LLVM code to multiply the integer variable <p>Here is an example of LLVM code to multiply the integer variable
'<tt>%X</tt>' by 8:</p> '<tt>%X</tt>' by 8:</p>