原网址是:http://llvm.org/docs/LangRef.html#abstract;
下面这些是我自己的翻译,肯定有很多不恰当的地方,做这些只是希望自己以后翻阅更加方便,如果能对大家有所帮助那是极好的!
别名:
别名,不像函数或变量,不会创建任何新新数据。他们只是一个现有数据的新符号和元数据。
别名有一个名字,别名是一个全局值或常量表达式。
别名有一个可选的链接类型,可选的可见形式,可选的DLL存储类和一个可选的TLS模式。
语法:
@<Name> = [Linkage] [Visibility] [DLLStorageClass] [ThreadLocal] [unnamed_addr] alias <AliaseeTy> @<Aliasee>
别名的链接类型必须是:private, internal, linkonce, weak, linkonce_odr, weak_odr, external的一种。请注意,某些系统链接器可能无法正确处理丢弃一个是别名的弱符号。
别名不是unnamed_addr保证了别名和别名表达的具有相同地址。 unnamed_addr只保证指向相同的内容。
由于别名只是第二名字,受到一些限制,其中一些只能在生成目标文件时进行检查:
定义别名的表达式必须是可计算的装配时间。因为它只是一个名字,没有重定位可以使用。
在表达式中没有别名可以是弱类型,因此在对象文件中不会出现中间别名被覆盖。
在表达式中没有全局值可以是一个声明,因为这将需要重定位,这是不可能的。
Comdats
Comdat IR提供了访问COFF和ELF目标文件COMDAT功能。
Comdats有代表了COMDAT关键字的名称。所有指定该关键字的全局对象将只在目标文件最后结束如果链接器选择关键字在其他一些关键字之上。别名放置在同一COMDAT其别名可以计算到,如果有的话。