summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-11-14 13:58:06 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-11-14 13:58:06 +0000
commit4929301af4d58c6a0e62a461b363dc3a8a856b27 (patch)
tree8c0eef89ed3088236c5a93710e33305b19544522 /llvm/test
parentc46f281f835fd7cf417c016d9dd64612b533f1d1 (diff)
downloadbcm5719-llvm-4929301af4d58c6a0e62a461b363dc3a8a856b27.tar.gz
bcm5719-llvm-4929301af4d58c6a0e62a461b363dc3a8a856b27.zip
Error if we see an alias to a declaration.
In ELF and COFF an alias is just another offset in a section. There is no way to represent an alias to something in another file. In MachO, the spec has the N_INDR type which should allow for exactly that, but is not currently implemented. Given that it is specified but not implemented, we error in codegen to avoid miscompiling but don't reject aliases to declarations in the verifier to leave the option open of implementing it. In the past we have used alias to declarations as a way of implementing weakref, which is why it exists in some old tests which this patch updates. llvm-svn: 194705
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/ARM/aliases.ll6
-rw-r--r--llvm/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll56
-rw-r--r--llvm/test/CodeGen/PowerPC/mcm-9.ll3
-rw-r--r--llvm/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll4
-rw-r--r--llvm/test/CodeGen/X86/2008-03-14-SpillerCrash.ll4
-rw-r--r--llvm/test/CodeGen/X86/alias-error.ll5
-rw-r--r--llvm/test/CodeGen/X86/aliases.ll6
-rw-r--r--llvm/test/CodeGen/X86/x86-64-pic-10.ll4
-rw-r--r--llvm/test/CodeGen/XCore/aliases.ll8
9 files changed, 70 insertions, 26 deletions
diff --git a/llvm/test/CodeGen/ARM/aliases.ll b/llvm/test/CodeGen/ARM/aliases.ll
index 4147bd0be07..f55ae10b247 100644
--- a/llvm/test/CodeGen/ARM/aliases.ll
+++ b/llvm/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/llvm/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll b/llvm/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
index 6281ada73fc..3f17ce1e0b1 100644
--- a/llvm/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
+++ b/llvm/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/llvm/test/CodeGen/PowerPC/mcm-9.ll b/llvm/test/CodeGen/PowerPC/mcm-9.ll
index e587f61eaf2..7906b6abea6 100644
--- a/llvm/test/CodeGen/PowerPC/mcm-9.ll
+++ b/llvm/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/llvm/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll b/llvm/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll
index c5d2a46f92c..7e37ef5c40d 100644
--- a/llvm/test/CodeGen/X86/2007-09-06-ExtWeakAliasee.ll
+++ b/llvm/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/llvm/test/CodeGen/X86/2008-03-14-SpillerCrash.ll b/llvm/test/CodeGen/X86/2008-03-14-SpillerCrash.ll
index 8946415108f..18b3714f851 100644
--- a/llvm/test/CodeGen/X86/2008-03-14-SpillerCrash.ll
+++ b/llvm/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/llvm/test/CodeGen/X86/alias-error.ll b/llvm/test/CodeGen/X86/alias-error.ll
new file mode 100644
index 00000000000..89b0876a837
--- /dev/null
+++ b/llvm/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/llvm/test/CodeGen/X86/aliases.ll b/llvm/test/CodeGen/X86/aliases.ll
index 025dcfedb62..d0a262d390d 100644
--- a/llvm/test/CodeGen/X86/aliases.ll
+++ b/llvm/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/llvm/test/CodeGen/X86/x86-64-pic-10.ll b/llvm/test/CodeGen/X86/x86-64-pic-10.ll
index 3ec172b2b65..da8082b9251 100644
--- a/llvm/test/CodeGen/X86/x86-64-pic-10.ll
+++ b/llvm/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/llvm/test/CodeGen/XCore/aliases.ll b/llvm/test/CodeGen/XCore/aliases.ll
index d4da63c5d9a..b7ad416968f 100644
--- a/llvm/test/CodeGen/XCore/aliases.ll
+++ b/llvm/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
OpenPOWER on IntegriCloud