diff options
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 5 | ||||
-rw-r--r-- | test/CodeGen/ARM/aliases.ll | 6 | ||||
-rw-r--r-- | test/CodeGen/Generic/2009-03-17-LSR-APInt.ll | 56 | ||||
-rw-r--r-- | test/CodeGen/PowerPC/mcm-9.ll | 3 | ||||
-rw-r--r-- | test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-03-14-SpillerCrash.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/alias-error.ll | 5 | ||||
-rw-r--r-- | test/CodeGen/X86/aliases.ll | 6 | ||||
-rw-r--r-- | test/CodeGen/X86/x86-64-pic-10.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/XCore/aliases.ll | 8 |
10 files changed, 75 insertions, 26 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 44a8316723..308b0e091a 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -949,6 +949,11 @@ bool AsmPrinter::doFinalization(Module &M) { MCSymbol *Name = getSymbol(I); const GlobalValue *GV = I->getAliasedGlobal(); + if (GV->isDeclaration()) { + report_fatal_error(Name->getName() + + ": Target doesn't support aliases to declarations"); + } + MCSymbol *Target = getSymbol(GV); if (I->hasExternalLinkage() || !MAI->getWeakRefDirective()) diff --git a/test/CodeGen/ARM/aliases.ll b/test/CodeGen/ARM/aliases.ll index 4147bd0be0..f55ae10b24 100644 --- a/test/CodeGen/ARM/aliases.ll +++ b/test/CodeGen/ARM/aliases.ll @@ -16,13 +16,15 @@ ; CHECK: .globl A ; CHECK: A = bar -@bar = external global i32 +@bar = global i32 42 @foo1 = alias i32* @bar @foo2 = alias i32* @bar %FunTy = type i32() -declare i32 @foo_f() +define i32 @foo_f() { + ret i32 0 +} @bar_f = alias weak %FunTy* @foo_f @bar_i = alias internal i32* @bar diff --git a/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll b/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll index 6281ada73f..3f17ce1e0b 100644 --- a/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll +++ b/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll @@ -63,30 +63,58 @@ bb47: ; preds = %bb46, %bb44 br label %bb44 } -declare i32 @pthread_once(i32*, void ()*) +define i32 @pthread_once(i32*, void ()*) { + ret i32 0 +} -declare i8* @pthread_getspecific(i32) +define i8* @pthread_getspecific(i32) { + ret i8* null +} -declare i32 @pthread_setspecific(i32, i8*) +define i32 @pthread_setspecific(i32, i8*) { + ret i32 0 +} -declare i32 @pthread_create(i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*) +define i32 @pthread_create(i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*) { + ret i32 0 +} -declare i32 @pthread_cancel(i64) +define i32 @pthread_cancel(i64) { + ret i32 0 +} -declare i32 @pthread_mutex_lock(%struct.pthread_mutex_t*) +define i32 @pthread_mutex_lock(%struct.pthread_mutex_t*) { + ret i32 0 +} -declare i32 @pthread_mutex_trylock(%struct.pthread_mutex_t*) +define i32 @pthread_mutex_trylock(%struct.pthread_mutex_t*) { + ret i32 0 +} -declare i32 @pthread_mutex_unlock(%struct.pthread_mutex_t*) +define i32 @pthread_mutex_unlock(%struct.pthread_mutex_t*) { + ret i32 0 +} -declare i32 @pthread_mutex_init(%struct.pthread_mutex_t*, %struct.Alignment*) +define i32 @pthread_mutex_init(%struct.pthread_mutex_t*, %struct.Alignment*) { + ret i32 0 +} -declare i32 @pthread_key_create(i32*, void (i8*)*) +define i32 @pthread_key_create(i32*, void (i8*)*) { + ret i32 0 +} -declare i32 @pthread_key_delete(i32) +define i32 @pthread_key_delete(i32) { + ret i32 0 +} -declare i32 @pthread_mutexattr_init(%struct.Alignment*) +define i32 @pthread_mutexattr_init(%struct.Alignment*) { + ret i32 0 +} -declare i32 @pthread_mutexattr_settype(%struct.Alignment*, i32) +define i32 @pthread_mutexattr_settype(%struct.Alignment*, i32) { + ret i32 0 +} -declare i32 @pthread_mutexattr_destroy(%struct.Alignment*) +define i32 @pthread_mutexattr_destroy(%struct.Alignment*) { + ret i32 0 +} diff --git a/test/CodeGen/PowerPC/mcm-9.ll b/test/CodeGen/PowerPC/mcm-9.ll index e587f61eaf..7906b6abea 100644 --- a/test/CodeGen/PowerPC/mcm-9.ll +++ b/test/CodeGen/PowerPC/mcm-9.ll @@ -7,8 +7,7 @@ target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64" target triple = "powerpc64-unknown-linux-gnu" -@ei = external global i32 -@a = alias i32* @ei +@a = external global i32 define signext i32 @test_external() nounwind { entry: diff --git a/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll b/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll index c5d2a46f92..7e37ef5c40 100644 --- a/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll +++ b/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll @@ -1,4 +1,6 @@ ; RUN: llc < %s -march=x86 | grep weak | count 2 @__gthrw_pthread_once = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0] -declare extern_weak i32 @pthread_once(i32*, void ()*) +define weak i32 @pthread_once(i32*, void ()*) { + ret i32 0 +} diff --git a/test/CodeGen/X86/2008-03-14-SpillerCrash.ll b/test/CodeGen/X86/2008-03-14-SpillerCrash.ll index 8946415108..18b3714f85 100644 --- a/test/CodeGen/X86/2008-03-14-SpillerCrash.ll +++ b/test/CodeGen/X86/2008-03-14-SpillerCrash.ll @@ -45,4 +45,6 @@ bb383: ; preds = %bb374.us, %bb311.split ret i64 0 } -declare i64 @__wcstoll_l(i32*, i32**, i32, %struct.__locale_struct*) nounwind +define i64 @__wcstoll_l(i32*, i32**, i32, %struct.__locale_struct*) nounwind { + ret i64 0 +} diff --git a/test/CodeGen/X86/alias-error.ll b/test/CodeGen/X86/alias-error.ll new file mode 100644 index 0000000000..89b0876a83 --- /dev/null +++ b/test/CodeGen/X86/alias-error.ll @@ -0,0 +1,5 @@ +; RUN: not llc < %s -mtriple=i686-pc-linux-gnu %s 2>&1 | FileCheck %s + +@a = external global i32 +@b = alias i32* @a +; CHECK: b: Target doesn't support aliases to declarations diff --git a/test/CodeGen/X86/aliases.ll b/test/CodeGen/X86/aliases.ll index 025dcfedb6..d0a262d390 100644 --- a/test/CodeGen/X86/aliases.ll +++ b/test/CodeGen/X86/aliases.ll @@ -1,6 +1,6 @@ ; RUN: llc < %s -mtriple=i686-pc-linux-gnu -asm-verbose=false | FileCheck %s -@bar = external global i32 +@bar = global i32 42 ; CHECK-DAG: .globl foo1 @foo1 = alias i32* @bar @@ -10,7 +10,9 @@ %FunTy = type i32() -declare i32 @foo_f() +define i32 @foo_f() { + ret i32 0 +} ; CHECK-DAG: .weak bar_f @bar_f = alias weak %FunTy* @foo_f diff --git a/test/CodeGen/X86/x86-64-pic-10.ll b/test/CodeGen/X86/x86-64-pic-10.ll index 3ec172b2b6..da8082b925 100644 --- a/test/CodeGen/X86/x86-64-pic-10.ll +++ b/test/CodeGen/X86/x86-64-pic-10.ll @@ -9,4 +9,6 @@ entry: ret void } -declare extern_weak i32 @f() +define weak i32 @f() { + ret i32 42 +} diff --git a/test/CodeGen/XCore/aliases.ll b/test/CodeGen/XCore/aliases.ll index d4da63c5d9..b7ad416968 100644 --- a/test/CodeGen/XCore/aliases.ll +++ b/test/CodeGen/XCore/aliases.ll @@ -1,7 +1,9 @@ ; RUN: llc < %s -march=xcore | FileCheck %s -declare void @a_val() nounwind -@b_val = external constant i32, section ".cp.rodata" -@c_val = external global i32 +define void @a_val() nounwind { + ret void +} +@b_val = constant i32 42, section ".cp.rodata" +@c_val = global i32 42 @a = alias void ()* @a_val @b = alias i32* @b_val |