diff options
author | Reid Spencer <reid@x10sys.com> | 2007-08-07 14:34:28 +0000 |
---|---|---|
committer | Reid Spencer <reid@x10sys.com> | 2007-08-07 14:34:28 +0000 |
commit | c8245b0b1f9f8a0d78621706d4d988f42fd00935 (patch) | |
tree | e4580e471149a14e6e3642007fab0bfa562cd139 /docs/LangRef.html | |
parent | def66befa8da9b93d1e0991abbba7e781b244f33 (diff) | |
download | external_llvm-c8245b0b1f9f8a0d78621706d4d988f42fd00935.zip external_llvm-c8245b0b1f9f8a0d78621706d4d988f42fd00935.tar.gz external_llvm-c8245b0b1f9f8a0d78621706d4d988f42fd00935.tar.bz2 |
Describe the global/local naming convention.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40890 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/LangRef.html')
-rw-r--r-- | docs/LangRef.html | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 35990bd..bf9464b 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -296,25 +296,27 @@ the parser.</p> <div class="doc_text"> -<p>LLVM uses three different forms of identifiers, for different -purposes:</p> + <p>LLVM identifiers come in two basic types: global and local. Global + 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> - <li>Named values are represented as a string of characters with a '%' prefix. - For example, %foo, %DivisionByZero, %a.really.long.identifier. The actual - regular expression used is '<tt>%[a-zA-Z$._][a-zA-Z$._0-9]*</tt>'. + <li>Named values are represented as a string of characters with their prefix. + For example, %foo, @DivisionByZero, %a.really.long.identifier. The actual + 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 - with quotes. In this way, anything except a <tt>"</tt> character can be used - in a name.</li> + with quotes. In this way, anything except a <tt>"</tt> character can + be used in a named value.</li> - <li>Unnamed values are represented as an unsigned numeric value with a '%' - prefix. For example, %12, %2, %44.</li> + <li>Unnamed values are represented as an unsigned numeric value with their + prefix. For example, %12, @2, %44.</li> <li>Constants, which are described in a <a href="#constants">section about constants</a>, below.</li> </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 reserved words may be expanded in the future without penalty. Additionally, 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 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 -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 '<tt>%X</tt>' by 8:</p> |