mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-01 07:30:33 +00:00
Use "weak alias" instead of "alias weak"
Before this patch we had @a = weak global ... but @b = alias weak ... The patch changes aliases to look more like global variables. Looking at some really old code suggests that the reason was that the old bison based parser had a reduction for alias linkages and another one for global variable linkages. Putting the alias first avoided the reduce/reduce conflict. The days of the old .ll parser are long gone. The new one parses just "linkage" and a later check is responsible for deciding if a linkage is valid in a given context. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214355 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
367c5c25e8
commit
d57120551f
@ -698,7 +698,7 @@ Aliases may have an optional :ref:`linkage type <linkage>`, an optional
|
||||
|
||||
Syntax::
|
||||
|
||||
@<Name> = [Visibility] [DLLStorageClass] [ThreadLocal] [unnamed_addr] alias [Linkage] <AliaseeTy> @<Aliasee>
|
||||
@<Name> = [Linkage] [Visibility] [DLLStorageClass] [ThreadLocal] [unnamed_addr] alias <AliaseeTy> @<Aliasee>
|
||||
|
||||
The linkage must be one of ``private``, ``internal``, ``linkonce``, ``weak``,
|
||||
``linkonce_odr``, ``weak_odr``, ``external``. Note that some system linkers
|
||||
|
@ -481,10 +481,10 @@ bool LLParser::ParseUnnamedGlobal() {
|
||||
parseOptionalUnnamedAddr(UnnamedAddr))
|
||||
return true;
|
||||
|
||||
if (HasLinkage || Lex.getKind() != lltok::kw_alias)
|
||||
if (Lex.getKind() != lltok::kw_alias)
|
||||
return ParseGlobal(Name, NameLoc, Linkage, HasLinkage, Visibility,
|
||||
DLLStorageClass, TLM, UnnamedAddr);
|
||||
return ParseAlias(Name, NameLoc, Visibility, DLLStorageClass, TLM,
|
||||
return ParseAlias(Name, NameLoc, Linkage, Visibility, DLLStorageClass, TLM,
|
||||
UnnamedAddr);
|
||||
}
|
||||
|
||||
@ -510,10 +510,11 @@ bool LLParser::ParseNamedGlobal() {
|
||||
parseOptionalUnnamedAddr(UnnamedAddr))
|
||||
return true;
|
||||
|
||||
if (HasLinkage || Lex.getKind() != lltok::kw_alias)
|
||||
if (Lex.getKind() != lltok::kw_alias)
|
||||
return ParseGlobal(Name, NameLoc, Linkage, HasLinkage, Visibility,
|
||||
DLLStorageClass, TLM, UnnamedAddr);
|
||||
return ParseAlias(Name, NameLoc, Visibility, DLLStorageClass, TLM,
|
||||
|
||||
return ParseAlias(Name, NameLoc, Linkage, Visibility, DLLStorageClass, TLM,
|
||||
UnnamedAddr);
|
||||
}
|
||||
|
||||
@ -691,33 +692,29 @@ static bool isValidVisibilityForLinkage(unsigned V, unsigned L) {
|
||||
}
|
||||
|
||||
/// ParseAlias:
|
||||
/// ::= GlobalVar '=' OptionalVisibility OptionalDLLStorageClass
|
||||
/// OptionalThreadLocal OptionalUnNammedAddr 'alias'
|
||||
/// OptionalLinkage Aliasee
|
||||
/// ::= GlobalVar '=' OptionalLinkage OptionalVisibility
|
||||
/// OptionalDLLStorageClass OptionalThreadLocal
|
||||
/// OptionalUnNammedAddr 'alias' Aliasee
|
||||
///
|
||||
/// Aliasee
|
||||
/// ::= TypeAndValue
|
||||
///
|
||||
/// Everything through OptionalUnNammedAddr has already been parsed.
|
||||
///
|
||||
bool LLParser::ParseAlias(const std::string &Name, LocTy NameLoc,
|
||||
bool LLParser::ParseAlias(const std::string &Name, LocTy NameLoc, unsigned L,
|
||||
unsigned Visibility, unsigned DLLStorageClass,
|
||||
GlobalVariable::ThreadLocalMode TLM,
|
||||
bool UnnamedAddr) {
|
||||
assert(Lex.getKind() == lltok::kw_alias);
|
||||
Lex.Lex();
|
||||
LocTy LinkageLoc = Lex.getLoc();
|
||||
unsigned L;
|
||||
if (ParseOptionalLinkage(L))
|
||||
return true;
|
||||
|
||||
GlobalValue::LinkageTypes Linkage = (GlobalValue::LinkageTypes) L;
|
||||
|
||||
if(!GlobalAlias::isValidLinkage(Linkage))
|
||||
return Error(LinkageLoc, "invalid linkage type for alias");
|
||||
return Error(NameLoc, "invalid linkage type for alias");
|
||||
|
||||
if (!isValidVisibilityForLinkage(Visibility, L))
|
||||
return Error(LinkageLoc,
|
||||
return Error(NameLoc,
|
||||
"symbol with local linkage must have default visibility");
|
||||
|
||||
Constant *Aliasee;
|
||||
|
@ -258,8 +258,8 @@ namespace llvm {
|
||||
bool HasLinkage, unsigned Visibility,
|
||||
unsigned DLLStorageClass,
|
||||
GlobalVariable::ThreadLocalMode TLM, bool UnnamedAddr);
|
||||
bool ParseAlias(const std::string &Name, LocTy Loc, unsigned Visibility,
|
||||
unsigned DLLStorageClass,
|
||||
bool ParseAlias(const std::string &Name, LocTy Loc, unsigned Linkage,
|
||||
unsigned Visibility, unsigned DLLStorageClass,
|
||||
GlobalVariable::ThreadLocalMode TLM, bool UnnamedAddr);
|
||||
bool parseComdat();
|
||||
bool ParseStandaloneMetadata();
|
||||
|
@ -1509,6 +1509,7 @@ void AssemblyWriter::printAlias(const GlobalAlias *GA) {
|
||||
PrintLLVMName(Out, GA);
|
||||
Out << " = ";
|
||||
}
|
||||
PrintLinkage(GA->getLinkage(), Out);
|
||||
PrintVisibility(GA->getVisibility(), Out);
|
||||
PrintDLLStorageClass(GA->getDLLStorageClass(), Out);
|
||||
PrintThreadLocalModel(GA->getThreadLocalMode(), Out);
|
||||
@ -1517,8 +1518,6 @@ void AssemblyWriter::printAlias(const GlobalAlias *GA) {
|
||||
|
||||
Out << "alias ";
|
||||
|
||||
PrintLinkage(GA->getLinkage(), Out);
|
||||
|
||||
const Constant *Aliasee = GA->getAliasee();
|
||||
|
||||
if (!Aliasee) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
; PR1645
|
||||
|
||||
@__gthread_active_ptr.5335 = internal constant i8* bitcast (i32 (i32)* @__gthrw_pthread_cancel to i8*)
|
||||
@__gthrw_pthread_cancel = alias weak i32 (i32)* @pthread_cancel
|
||||
@__gthrw_pthread_cancel = weak alias i32 (i32)* @pthread_cancel
|
||||
|
||||
|
||||
|
||||
|
@ -3,5 +3,5 @@
|
||||
; Test that global aliases are allowed to be constant addrspacecast
|
||||
|
||||
@i = internal addrspace(1) global i8 42
|
||||
@ia = alias internal addrspacecast (i8 addrspace(1)* @i to i8 addrspace(2)* addrspace(3)*)
|
||||
; CHECK: @ia = alias internal addrspacecast (i8 addrspace(2)* addrspace(1)* bitcast (i8 addrspace(1)* @i to i8 addrspace(2)* addrspace(1)*) to i8 addrspace(2)* addrspace(3)*)
|
||||
@ia = internal alias addrspacecast (i8 addrspace(1)* @i to i8 addrspace(2)* addrspace(3)*)
|
||||
; CHECK: @ia = internal alias addrspacecast (i8 addrspace(2)* addrspace(1)* bitcast (i8 addrspace(1)* @i to i8 addrspace(2)* addrspace(1)*) to i8 addrspace(2)* addrspace(3)*)
|
||||
|
@ -2,5 +2,5 @@
|
||||
|
||||
@global = global i32 0
|
||||
|
||||
@alias = hidden alias internal i32* @global
|
||||
@alias = internal hidden alias i32* @global
|
||||
; CHECK: symbol with local linkage must have default visibility
|
||||
|
@ -2,5 +2,5 @@
|
||||
|
||||
@global = global i32 0
|
||||
|
||||
@alias = protected alias internal i32* @global
|
||||
@alias = internal protected alias i32* @global
|
||||
; CHECK: symbol with local linkage must have default visibility
|
||||
|
@ -2,5 +2,5 @@
|
||||
|
||||
@global = global i32 0
|
||||
|
||||
@alias = hidden alias private i32* @global
|
||||
@alias = private hidden alias i32* @global
|
||||
; CHECK: symbol with local linkage must have default visibility
|
||||
|
@ -2,5 +2,5 @@
|
||||
|
||||
@global = global i32 0
|
||||
|
||||
@alias = protected alias private i32* @global
|
||||
@alias = private protected alias i32* @global
|
||||
; CHECK: symbol with local linkage must have default visibility
|
||||
|
@ -26,22 +26,22 @@
|
||||
@global = global i32 0
|
||||
|
||||
@default.internal.alias = alias internal i32* @global
|
||||
; CHECK: @default.internal.alias = alias internal i32* @global
|
||||
; CHECK: @default.internal.alias = internal alias i32* @global
|
||||
|
||||
@hidden.internal.alias = hidden alias internal i32* @global
|
||||
; CHECK: @hidden.internal.alias = alias internal i32* @global
|
||||
; CHECK: @hidden.internal.alias = internal alias i32* @global
|
||||
|
||||
@protected.internal.alias = protected alias internal i32* @global
|
||||
; CHECK: @protected.internal.alias = alias internal i32* @global
|
||||
; CHECK: @protected.internal.alias = internal alias i32* @global
|
||||
|
||||
@default.private.alias = alias private i32* @global
|
||||
; CHECK: @default.private.alias = alias private i32* @global
|
||||
; CHECK: @default.private.alias = private alias i32* @global
|
||||
|
||||
@hidden.private.alias = hidden alias private i32* @global
|
||||
; CHECK: @hidden.private.alias = alias private i32* @global
|
||||
; CHECK: @hidden.private.alias = private alias i32* @global
|
||||
|
||||
@protected.private.alias = protected alias private i32* @global
|
||||
; CHECK: @protected.private.alias = alias private i32* @global
|
||||
; CHECK: @protected.private.alias = private alias i32* @global
|
||||
|
||||
define internal void @default.internal() {
|
||||
; CHECK: define internal void @default.internal
|
||||
|
@ -25,9 +25,9 @@
|
||||
define i32 @foo_f() {
|
||||
ret i32 0
|
||||
}
|
||||
@bar_f = alias weak %FunTy* @foo_f
|
||||
@bar_f = weak alias %FunTy* @foo_f
|
||||
|
||||
@bar_i = alias internal i32* @bar
|
||||
@bar_i = internal alias i32* @bar
|
||||
|
||||
@A = alias bitcast (i32* @bar to i64*)
|
||||
|
||||
|
@ -30,20 +30,20 @@
|
||||
%"struct.qdesigner_internal::GridLayout" = type { %"struct.qdesigner_internal::Layout", %"struct.QPair<int,int>", %"struct.qdesigner_internal::Grid"* }
|
||||
%"struct.qdesigner_internal::Layout" = type { %struct.QObject, %"struct.QList<QAbstractExtensionFactory*>", %struct.QWidget*, %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >", %struct.QWidget*, %struct.QDesignerFormWindowInterface*, i8, %"struct.QPair<int,int>", %struct.QRect, i8 }
|
||||
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%struct.pthread_mutex_t*, %struct.Alignment*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.Alignment*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_init ; <i32 (%struct.Alignment*)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%struct.Alignment*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.Alignment*, i32)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_destroy ; <i32 (%struct.Alignment*)*> [#uses=0]
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_getspecificj = weak alias i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = weak alias i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_cancelm = weak alias i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (%struct.pthread_mutex_t*, %struct.Alignment*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.Alignment*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (%struct.Alignment*)* @pthread_mutexattr_init ; <i32 (%struct.Alignment*)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (%struct.Alignment*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.Alignment*, i32)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (%struct.Alignment*)* @pthread_mutexattr_destroy ; <i32 (%struct.Alignment*)*> [#uses=0]
|
||||
|
||||
define void @_ZN18qdesigner_internal10GridLayout9buildGridEv(%"struct.qdesigner_internal::GridLayout"* %this) nounwind {
|
||||
entry:
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc < %s -mtriple=i686-pc-linux-gnu | FileCheck %s
|
||||
|
||||
@__gthrw_pthread_once = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@__gthrw_pthread_once = weak alias i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
|
||||
define weak i32 @pthread_once(i32*, void ()*) {
|
||||
ret i32 0
|
||||
|
@ -30,12 +30,12 @@ define i32 @foo_f() {
|
||||
ret i32 0
|
||||
}
|
||||
; CHECK-DAG: .weak bar_f
|
||||
@bar_f = alias weak %FunTy* @foo_f
|
||||
@bar_f = weak alias %FunTy* @foo_f
|
||||
|
||||
@bar_l = alias linkonce_odr i32* @bar
|
||||
@bar_l = linkonce_odr alias i32* @bar
|
||||
; CHECK-DAG: .weak bar_l
|
||||
|
||||
@bar_i = alias internal i32* @bar
|
||||
@bar_i = internal alias i32* @bar
|
||||
|
||||
; CHECK-DAG: .globl A
|
||||
@A = alias bitcast (i32* @bar to i64*)
|
||||
|
@ -70,7 +70,7 @@ define weak_odr dllexport void @weak1() {
|
||||
|
||||
; CHECK: .weak weak_alias
|
||||
; CHECK: weak_alias = f1
|
||||
@weak_alias = dllexport alias weak_odr void()* @f1
|
||||
@weak_alias = weak_odr dllexport alias void()* @f1
|
||||
|
||||
@blob = global [6 x i8] c"\B8*\00\00\00\C3", section ".text", align 16
|
||||
@blob_alias = dllexport alias bitcast ([6 x i8]* @blob to i32 ()*)
|
||||
|
@ -89,7 +89,7 @@ define weak_odr dllexport void @weak1() {
|
||||
|
||||
; CHECK: .weak _weak_alias
|
||||
; CHECK: _weak_alias = _f1
|
||||
@weak_alias = dllexport alias weak_odr void()* @f1
|
||||
@weak_alias = weak_odr dllexport alias void()* @f1
|
||||
|
||||
|
||||
; CHECK: .section .drectve
|
||||
|
@ -13,7 +13,7 @@ entry:
|
||||
; CHECK: leal v@TLSGD
|
||||
; CHECK: __tls_get_addr
|
||||
|
||||
@alias = alias internal i32* @v
|
||||
@alias = internal alias i32* @v
|
||||
define i32 @f_alias() nounwind {
|
||||
entry:
|
||||
%t = load i32* @v
|
||||
|
@ -5,7 +5,7 @@ entry:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
@i = alias internal i32 ()* @f
|
||||
@i = internal alias i32 ()* @f
|
||||
@j = alias i32 ()* @f
|
||||
|
||||
define i32 @main(i32 %argc, i8** %argv) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc < %s -mtriple=x86_64-pc-linux -relocation-model=pic -o %t1
|
||||
; RUN: grep "callq g@PLT" %t1
|
||||
|
||||
@g = alias weak i32 ()* @f
|
||||
@g = weak alias i32 ()* @f
|
||||
|
||||
define void @h() {
|
||||
entry:
|
||||
|
@ -9,8 +9,8 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
%class.anon = type { i8 }
|
||||
%class.anon.0 = type { i8 }
|
||||
|
||||
@"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_" = alias internal void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_"
|
||||
@"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_0EET_" = alias internal void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_"
|
||||
@"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_" = internal alias void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_1_0EET_"
|
||||
@"_ZN8functionIFvvEEC1IZN17BPLFunctionWriter9writeExprEvE3$_0EET_" = internal alias void (%class.function*)* @"_ZN8functionIFvvEEC2IZN17BPLFunctionWriter9writeExprEvE3$_0EET_"
|
||||
|
||||
define void @_ZN17BPLFunctionWriter9writeExprEv(%class.BPLFunctionWriter* %this) nounwind uwtable align 2 {
|
||||
entry:
|
||||
|
@ -21,10 +21,10 @@
|
||||
define i32 @foo_f() {
|
||||
ret i32 0
|
||||
}
|
||||
@bar_f = alias weak_odr %FunTy* @foo_f
|
||||
@bar_f = weak_odr alias %FunTy* @foo_f
|
||||
@bar_ff = alias i32()* @bar_f
|
||||
|
||||
@bar_i = alias internal i32* @bar
|
||||
@bar_i = internal alias i32* @bar
|
||||
|
||||
@A = alias bitcast (i32* @bar to i64*)
|
||||
|
||||
|
@ -8,7 +8,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
@foo = weak global i32 0 ; <i32*> [#uses=1]
|
||||
|
||||
@bar = alias weak i32* @foo ; <i32*> [#uses=1]
|
||||
@bar = weak alias i32* @foo ; <i32*> [#uses=1]
|
||||
|
||||
define i32 @baz() nounwind {
|
||||
entry:
|
||||
|
@ -7,32 +7,32 @@
|
||||
%union.pthread_mutexattr_t = type { [4 x i8] }
|
||||
%union.pthread_cond_t = type { [48 x i8] }
|
||||
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once
|
||||
@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create
|
||||
@_ZL20__gthrw_pthread_joinmPPv = alias weak i32 (i64, i8**)* @pthread_join
|
||||
@_ZL21__gthrw_pthread_equalmm = alias weak i32 (i64, i64)* @pthread_equal
|
||||
@_ZL20__gthrw_pthread_selfv = alias weak i64 ()* @pthread_self
|
||||
@_ZL22__gthrw_pthread_detachm = alias weak i32 (i64)* @pthread_detach
|
||||
@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel
|
||||
@_ZL19__gthrw_sched_yieldv = alias weak i32 ()* @sched_yield
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock
|
||||
@_ZL31__gthrw_pthread_mutex_timedlockP15pthread_mutex_tPK8timespec = alias weak i32 (%union.pthread_mutex_t*, %struct.timespec*)* @pthread_mutex_timedlock
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init
|
||||
@_ZL29__gthrw_pthread_mutex_destroyP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_destroy
|
||||
@_ZL30__gthrw_pthread_cond_broadcastP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_broadcast
|
||||
@_ZL27__gthrw_pthread_cond_signalP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_signal
|
||||
@_ZL25__gthrw_pthread_cond_waitP14pthread_cond_tP15pthread_mutex_t = alias weak i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*)* @pthread_cond_wait
|
||||
@_ZL30__gthrw_pthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec = alias weak i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*, %struct.timespec*)* @pthread_cond_timedwait
|
||||
@_ZL28__gthrw_pthread_cond_destroyP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_destroy
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create
|
||||
@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (i32*, void ()*)* @pthread_once
|
||||
@_ZL27__gthrw_pthread_getspecificj = weak alias i8* (i32)* @pthread_getspecific
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, i8*)* @pthread_setspecific
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = weak alias i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create
|
||||
@_ZL20__gthrw_pthread_joinmPPv = weak alias i32 (i64, i8**)* @pthread_join
|
||||
@_ZL21__gthrw_pthread_equalmm = weak alias i32 (i64, i64)* @pthread_equal
|
||||
@_ZL20__gthrw_pthread_selfv = weak alias i64 ()* @pthread_self
|
||||
@_ZL22__gthrw_pthread_detachm = weak alias i32 (i64)* @pthread_detach
|
||||
@_ZL22__gthrw_pthread_cancelm = weak alias i32 (i64)* @pthread_cancel
|
||||
@_ZL19__gthrw_sched_yieldv = weak alias i32 ()* @sched_yield
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock
|
||||
@_ZL31__gthrw_pthread_mutex_timedlockP15pthread_mutex_tPK8timespec = weak alias i32 (%union.pthread_mutex_t*, %struct.timespec*)* @pthread_mutex_timedlock
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init
|
||||
@_ZL29__gthrw_pthread_mutex_destroyP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_destroy
|
||||
@_ZL30__gthrw_pthread_cond_broadcastP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_broadcast
|
||||
@_ZL27__gthrw_pthread_cond_signalP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_signal
|
||||
@_ZL25__gthrw_pthread_cond_waitP14pthread_cond_tP15pthread_mutex_t = weak alias i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*)* @pthread_cond_wait
|
||||
@_ZL30__gthrw_pthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec = weak alias i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*, %struct.timespec*)* @pthread_cond_timedwait
|
||||
@_ZL28__gthrw_pthread_cond_destroyP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_destroy
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (i32*, void (i8*)*)* @pthread_key_create
|
||||
@_ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32)* @pthread_key_delete
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy
|
||||
|
||||
declare extern_weak i32 @pthread_once(i32*, void ()*)
|
||||
|
||||
|
@ -10,32 +10,32 @@
|
||||
%union.pthread_cond_t = type { [48 x i8] }
|
||||
|
||||
@_ZN13HexxagonBoardC1ERKS_ = alias void (%struct.HexxagonBoard*, %struct.HexxagonBoard*)* @_ZN13HexxagonBoardC2ERKS_
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once
|
||||
@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create
|
||||
@_ZL20__gthrw_pthread_joinmPPv = alias weak i32 (i64, i8**)* @pthread_join
|
||||
@_ZL21__gthrw_pthread_equalmm = alias weak i32 (i64, i64)* @pthread_equal
|
||||
@_ZL20__gthrw_pthread_selfv = alias weak i64 ()* @pthread_self
|
||||
@_ZL22__gthrw_pthread_detachm = alias weak i32 (i64)* @pthread_detach
|
||||
@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel
|
||||
@_ZL19__gthrw_sched_yieldv = alias weak i32 ()* @sched_yield
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock
|
||||
@_ZL31__gthrw_pthread_mutex_timedlockP15pthread_mutex_tPK8timespec = alias weak i32 (%union.pthread_mutex_t*, %struct.timespec*)* @pthread_mutex_timedlock
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init
|
||||
@_ZL29__gthrw_pthread_mutex_destroyP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_destroy
|
||||
@_ZL30__gthrw_pthread_cond_broadcastP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_broadcast
|
||||
@_ZL27__gthrw_pthread_cond_signalP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_signal
|
||||
@_ZL25__gthrw_pthread_cond_waitP14pthread_cond_tP15pthread_mutex_t = alias weak i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*)* @pthread_cond_wait
|
||||
@_ZL30__gthrw_pthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec = alias weak i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*, %struct.timespec*)* @pthread_cond_timedwait
|
||||
@_ZL28__gthrw_pthread_cond_destroyP14pthread_cond_t = alias weak i32 (%union.pthread_cond_t*)* @pthread_cond_destroy
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create
|
||||
@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (i32*, void ()*)* @pthread_once
|
||||
@_ZL27__gthrw_pthread_getspecificj = weak alias i8* (i32)* @pthread_getspecific
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, i8*)* @pthread_setspecific
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = weak alias i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create
|
||||
@_ZL20__gthrw_pthread_joinmPPv = weak alias i32 (i64, i8**)* @pthread_join
|
||||
@_ZL21__gthrw_pthread_equalmm = weak alias i32 (i64, i64)* @pthread_equal
|
||||
@_ZL20__gthrw_pthread_selfv = weak alias i64 ()* @pthread_self
|
||||
@_ZL22__gthrw_pthread_detachm = weak alias i32 (i64)* @pthread_detach
|
||||
@_ZL22__gthrw_pthread_cancelm = weak alias i32 (i64)* @pthread_cancel
|
||||
@_ZL19__gthrw_sched_yieldv = weak alias i32 ()* @sched_yield
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock
|
||||
@_ZL31__gthrw_pthread_mutex_timedlockP15pthread_mutex_tPK8timespec = weak alias i32 (%union.pthread_mutex_t*, %struct.timespec*)* @pthread_mutex_timedlock
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init
|
||||
@_ZL29__gthrw_pthread_mutex_destroyP15pthread_mutex_t = weak alias i32 (%union.pthread_mutex_t*)* @pthread_mutex_destroy
|
||||
@_ZL30__gthrw_pthread_cond_broadcastP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_broadcast
|
||||
@_ZL27__gthrw_pthread_cond_signalP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_signal
|
||||
@_ZL25__gthrw_pthread_cond_waitP14pthread_cond_tP15pthread_mutex_t = weak alias i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*)* @pthread_cond_wait
|
||||
@_ZL30__gthrw_pthread_cond_timedwaitP14pthread_cond_tP15pthread_mutex_tPK8timespec = weak alias i32 (%union.pthread_cond_t*, %union.pthread_mutex_t*, %struct.timespec*)* @pthread_cond_timedwait
|
||||
@_ZL28__gthrw_pthread_cond_destroyP14pthread_cond_t = weak alias i32 (%union.pthread_cond_t*)* @pthread_cond_destroy
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (i32*, void (i8*)*)* @pthread_key_create
|
||||
@_ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32)* @pthread_key_delete
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy
|
||||
|
||||
define void @_ZN13HexxagonBoardC2ERKS_(%struct.HexxagonBoard*, %struct.HexxagonBoard*) uwtable align 2 {
|
||||
ret void
|
||||
|
@ -8,9 +8,9 @@
|
||||
@v3 = weak hidden global i32 0
|
||||
|
||||
; Aliases
|
||||
@a1 = hidden alias weak i32* @v1
|
||||
@a2 = protected alias weak i32* @v2
|
||||
@a3 = hidden alias weak i32* @v3
|
||||
@a1 = weak hidden alias i32* @v1
|
||||
@a2 = weak protected alias i32* @v2
|
||||
@a3 = weak hidden alias i32* @v3
|
||||
|
||||
; Functions
|
||||
define weak hidden void @f1() {
|
||||
|
@ -28,7 +28,7 @@ module asm ".long undef_asm_sym"
|
||||
@g4 = private global i32 42
|
||||
|
||||
@a1 = alias i32* @g1
|
||||
@a2 = alias internal i32* @g1
|
||||
@a2 = internal alias i32* @g1
|
||||
|
||||
define void @f1() {
|
||||
ret void
|
||||
|
@ -17,20 +17,20 @@ target triple = "i386-pc-linux-gnu"
|
||||
%"struct.std::pair<std::_Rb_tree_iterator<std::pair<void* const, std::vector<ShadowInfo, std::allocator<ShadowInfo> > > >,bool>" = type { %"struct.std::_Rb_tree_iterator<std::pair<void* const, std::vector<ShadowInfo, std::allocator<ShadowInfo> > > >", i8 }
|
||||
%"struct.std::pair<void* const,void*>" = type { i8*, i8* }
|
||||
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_createPmPK16__pthread_attr_sPFPvS3_ES3_ = alias weak i32 (i32*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i32*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i32)* @pthread_cancel ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%struct.pthread_mutex_t*, %struct.__sched_param*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.__sched_param*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%struct.__sched_param*)* @pthread_mutexattr_init ; <i32 (%struct.__sched_param*)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%struct.__sched_param*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.__sched_param*, i32)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%struct.__sched_param*)* @pthread_mutexattr_destroy ; <i32 (%struct.__sched_param*)*> [#uses=0]
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = weak alias i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_getspecificj = weak alias i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = weak alias i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_createPmPK16__pthread_attr_sPFPvS3_ES3_ = weak alias i32 (i32*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i32*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_cancelm = weak alias i32 (i32)* @pthread_cancel ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = weak alias i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = weak alias i32 (%struct.pthread_mutex_t*, %struct.__sched_param*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.__sched_param*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = weak alias i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_deletej = weak alias i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = weak alias i32 (%struct.__sched_param*)* @pthread_mutexattr_init ; <i32 (%struct.__sched_param*)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = weak alias i32 (%struct.__sched_param*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.__sched_param*, i32)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = weak alias i32 (%struct.__sched_param*)* @pthread_mutexattr_destroy ; <i32 (%struct.__sched_param*)*> [#uses=0]
|
||||
|
||||
declare fastcc void @_ZNSt10_Select1stISt4pairIKPvS1_EEC1Ev() nounwind readnone
|
||||
|
||||
|
@ -5,14 +5,14 @@
|
||||
@A = global i32 0
|
||||
; CHECK: @A = global i32 0
|
||||
|
||||
@D = alias internal i32* @A
|
||||
@D = internal alias i32* @A
|
||||
; DEAD-NOT: @D
|
||||
|
||||
@L1 = alias i32* @A
|
||||
; CHECK: @L1 = alias i32* @A
|
||||
|
||||
@L2 = alias internal i32* @L1
|
||||
; CHECK: @L2 = alias internal i32* @L1
|
||||
@L2 = internal alias i32* @L1
|
||||
; CHECK: @L2 = internal alias i32* @L1
|
||||
|
||||
@L3 = alias i32* @L2
|
||||
; CHECK: @L3 = alias i32* @L2
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globaldce
|
||||
|
||||
@A = alias internal void ()* @F
|
||||
@A = internal alias void ()* @F
|
||||
define internal void @F() { ret void }
|
||||
|
@ -13,7 +13,7 @@ define void @g() {
|
||||
ret void
|
||||
}
|
||||
|
||||
@b = alias internal void ()* @g
|
||||
@b = internal alias void ()* @g
|
||||
; CHECK-NOT: @b
|
||||
|
||||
define void @h() {
|
||||
|
@ -9,12 +9,12 @@
|
||||
@bar1 = alias void ()* @bar2
|
||||
; CHECK: @bar1 = alias void ()* @bar2
|
||||
|
||||
@weak1 = alias weak void ()* @bar2
|
||||
; CHECK: @weak1 = alias weak void ()* @bar2
|
||||
@weak1 = weak alias void ()* @bar2
|
||||
; CHECK: @weak1 = weak alias void ()* @bar2
|
||||
|
||||
@bar4 = private unnamed_addr constant [2 x i8*] zeroinitializer
|
||||
@foo4 = unnamed_addr alias linkonce_odr getelementptr inbounds ([2 x i8*]* @bar4, i32 0, i32 1)
|
||||
; CHECK: @foo4 = unnamed_addr alias linkonce_odr getelementptr inbounds ([2 x i8*]* @bar4, i32 0, i32 1)
|
||||
@foo4 = linkonce_odr unnamed_addr alias getelementptr inbounds ([2 x i8*]* @bar4, i32 0, i32 1)
|
||||
; CHECK: @foo4 = linkonce_odr unnamed_addr alias getelementptr inbounds ([2 x i8*]* @bar4, i32 0, i32 1)
|
||||
|
||||
define void @bar2() {
|
||||
ret void
|
||||
|
@ -7,7 +7,7 @@ target datalayout = "p:32:32:32-p1:16:16:16"
|
||||
@i = internal addrspace(1) global i8 42
|
||||
|
||||
; CHECK: @ia = internal addrspace(1) global i8 42
|
||||
@ia = alias internal i8 addrspace(1)* @i
|
||||
@ia = internal alias i8 addrspace(1)* @i
|
||||
|
||||
@llvm.used = appending global [1 x i8*] [i8* addrspacecast (i8 addrspace(1)* @ca to i8*)], section "llvm.metadata"
|
||||
; CHECK-DAG: @llvm.used = appending global [1 x i8*] [i8* addrspacecast (i8 addrspace(1)* @ca to i8*)], section "llvm.metadata"
|
||||
@ -18,8 +18,8 @@ target datalayout = "p:32:32:32-p1:16:16:16"
|
||||
@sameAsUsed = global [1 x i8*] [i8* addrspacecast(i8 addrspace(1)* @ca to i8*)]
|
||||
; CHECK-DAG: @sameAsUsed = global [1 x i8*] [i8* addrspacecast (i8 addrspace(1)* @c to i8*)]
|
||||
|
||||
@ca = alias internal i8 addrspace(1)* @c
|
||||
; CHECK: @ca = alias internal i8 addrspace(1)* @c
|
||||
@ca = internal alias i8 addrspace(1)* @c
|
||||
; CHECK: @ca = internal alias i8 addrspace(1)* @c
|
||||
|
||||
define i8 addrspace(1)* @h() {
|
||||
ret i8 addrspace(1)* @ca
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt -S -globalopt < %s | FileCheck %s
|
||||
|
||||
@_Z17in_custom_section = internal global i8 42, section "CUSTOM"
|
||||
@in_custom_section = dllexport alias internal i8* @_Z17in_custom_section
|
||||
@in_custom_section = internal dllexport alias i8* @_Z17in_custom_section
|
||||
|
||||
; CHECK: @in_custom_section = internal dllexport global i8 42, section "CUSTOM"
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
@i = internal global i8 42
|
||||
; CHECK: @ia = internal global i8 42
|
||||
@ia = alias internal i8* @i
|
||||
@ia = internal alias i8* @i
|
||||
|
||||
@llvm.used = appending global [3 x i8*] [i8* bitcast (void ()* @fa to i8*), i8* bitcast (void ()* @f to i8*), i8* @ca], section "llvm.metadata"
|
||||
; CHECK-DAG: @llvm.used = appending global [3 x i8*] [i8* bitcast (void ()* @fa to i8*), i8* bitcast (void ()* @f to i8*), i8* @ca], section "llvm.metadata"
|
||||
@ -18,17 +18,17 @@
|
||||
@other = global i32* bitcast (void ()* @fa to i32*)
|
||||
; CHECK-DAG: @other = global i32* bitcast (void ()* @f to i32*)
|
||||
|
||||
@fa = alias internal void ()* @f
|
||||
; CHECK: @fa = alias internal void ()* @f
|
||||
@fa = internal alias void ()* @f
|
||||
; CHECK: @fa = internal alias void ()* @f
|
||||
|
||||
@fa2 = alias internal void ()* @f
|
||||
@fa2 = internal alias void ()* @f
|
||||
; CHECK-NOT: @fa2
|
||||
|
||||
@fa3 = alias internal void ()* @f
|
||||
@fa3 = internal alias void ()* @f
|
||||
; CHECK: @fa3
|
||||
|
||||
@ca = alias internal i8* @c
|
||||
; CHECK: @ca = alias internal i8* @c
|
||||
@ca = internal alias i8* @c
|
||||
; CHECK: @ca = internal alias i8* @c
|
||||
|
||||
define void @f() {
|
||||
ret void
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -instcombine -S | grep icmp
|
||||
; PR1646
|
||||
|
||||
@__gthrw_pthread_cancel = alias weak i32 (i32)* @pthread_cancel ; <i32 (i32)*> [#uses=1]
|
||||
@__gthrw_pthread_cancel = weak alias i32 (i32)* @pthread_cancel ; <i32 (i32)*> [#uses=1]
|
||||
@__gthread_active_ptr.5335 = internal constant i8* bitcast (i32 (i32)* @__gthrw_pthread_cancel to i8*) ; <i8**> [#uses=1]
|
||||
define weak i32 @pthread_cancel(i32) {
|
||||
ret i32 0
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -instcombine -S | grep icmp
|
||||
; PR1678
|
||||
|
||||
@A = alias weak void ()* @B ; <void ()*> [#uses=1]
|
||||
@A = weak alias void ()* @B ; <void ()*> [#uses=1]
|
||||
|
||||
define weak void @B() {
|
||||
ret void
|
||||
|
@ -32,7 +32,7 @@ define i16 @foo_as3_i16() nounwind {
|
||||
ret i16 %1
|
||||
}
|
||||
|
||||
@a_alias = alias weak [60 x i8] addrspace(3)* @a_as3
|
||||
@a_alias = weak alias [60 x i8] addrspace(3)* @a_as3
|
||||
define i32 @foo_alias() nounwind {
|
||||
%1 = call i32 @llvm.objectsize.i32.p3i8(i8 addrspace(3)* getelementptr inbounds ([60 x i8] addrspace(3)* @a_alias, i32 0, i32 0), i1 false)
|
||||
ret i32 %1
|
||||
|
@ -256,7 +256,7 @@ return:
|
||||
ret i32 7
|
||||
}
|
||||
|
||||
@globalalias = alias internal [60 x i8]* @a
|
||||
@globalalias = internal alias [60 x i8]* @a
|
||||
|
||||
; CHECK-LABEL: @test18(
|
||||
; CHECK-NEXT: ret i32 60
|
||||
@ -266,7 +266,7 @@ define i32 @test18() {
|
||||
ret i32 %1
|
||||
}
|
||||
|
||||
@globalalias2 = alias weak [60 x i8]* @a
|
||||
@globalalias2 = weak alias [60 x i8]* @a
|
||||
|
||||
; CHECK-LABEL: @test19(
|
||||
; CHECK: llvm.objectsize
|
||||
|
@ -4,10 +4,10 @@
|
||||
; CHECK: @A = internal global i32 0
|
||||
|
||||
@B = alias i32* @A
|
||||
; CHECK: @B = alias internal i32* @A
|
||||
; CHECK: @B = internal alias i32* @A
|
||||
|
||||
@C = alias i32* @A
|
||||
; CHECK: @C = alias internal i32* @A
|
||||
; CHECK: @C = internal alias i32* @A
|
||||
|
||||
define i32 @main() {
|
||||
%tmp = load i32* @C
|
||||
|
@ -10,9 +10,9 @@
|
||||
; CHECK: @protected.variable = internal global i32 0
|
||||
@protected.variable = protected global i32 0
|
||||
|
||||
; CHECK: @hidden.alias = alias internal i32* @global
|
||||
; CHECK: @hidden.alias = internal alias i32* @global
|
||||
@hidden.alias = hidden alias i32* @global
|
||||
; CHECK: @protected.alias = alias internal i32* @global
|
||||
; CHECK: @protected.alias = internal alias i32* @global
|
||||
@protected.alias = protected alias i32* @global
|
||||
|
||||
; CHECK: define internal void @hidden.function() {
|
||||
|
@ -12,7 +12,7 @@ target triple = "x86_64-pc-linux-gnu"
|
||||
@func_5_xxx.static_local_3_xxx = internal global i32 3, align 4
|
||||
@global_3_xxx = common global i32 0, align 4
|
||||
|
||||
@func_7_xxx = alias weak i32 (...)* @aliased_func_7_xxx
|
||||
@func_7_xxx = weak alias i32 (...)* @aliased_func_7_xxx
|
||||
|
||||
define i32 @aliased_func_7_xxx(...) {
|
||||
ret i32 0
|
||||
|
@ -21,7 +21,7 @@ declare void @f()
|
||||
|
||||
|
||||
@test3_a = global i32 42
|
||||
@test3_b = alias weak i32* @test3_a
|
||||
@test3_b = weak alias i32* @test3_a
|
||||
@test3_c = alias i32* @test3_b
|
||||
; CHECK: Alias cannot point to a weak alias
|
||||
; CHECK-NEXT: i32* @test3_c
|
||||
|
Loading…
Reference in New Issue
Block a user