From: Reid Spencer
LLVM uses three different forms of identifiers, for different -purposes:
+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:
LLVM requires that values start with a '%' sign for two reasons: Compilers +
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 'ret', etc...), for primitive type names ('void', 'i32', etc...), and others. These reserved words cannot conflict with variable names, because -none of them start with a '%' character.
+none of them start with a prefix character ('%' or '@').Here is an example of LLVM code to multiply the integer variable '%X' by 8: