diff --git a/docs/LangRef.html b/docs/LangRef.html index 9afc2259afe..7b8d4f8c854 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -22,6 +22,7 @@
LLVM IR allows you to specify name aliases for certain types. This can make +it easier to read the IR and make the IR more condensed (particularly when +recursive types are involved). An example of a name specification is: +
+ ++%mytype = type { %mytype*, i32 } ++
You may give a name to any type except "void". Type name aliases may be used anywhere a type is +expected with the syntax "%mytype".
+ +Note that type names are aliases for the structural type that they indicate, +and that you can therefore specify multiple names for the same type. This often +leads to confusing behavior when dumping out a .ll file. Since LLVM IR uses +structural typing, the name is not part of the type. When printing out LLVM IR, +the printer will pick one name to render all types of a particular +shape. This means that if you have code where two different source types end up +having the same LLVM type, that the dumper will sometimes print the "wrong" or +unexpected type. This is an important design point and isn't going to +change.
+ +