aboutsummaryrefslogtreecommitdiffstats
path: root/test/Linker
diff options
context:
space:
mode:
authorJohn Criswell <criswell@uiuc.edu>2004-05-07 13:57:19 +0000
committerJohn Criswell <criswell@uiuc.edu>2004-05-07 13:57:19 +0000
commit3a386d4929b91678563560505934df4bb9d3d7ff (patch)
treef7773ca9284e49efac447daecf7f007a683eedff /test/Linker
parent2944bcaaed94db2f3bb000f78ba75b4172b475cf (diff)
downloadexternal_llvm-3a386d4929b91678563560505934df4bb9d3d7ff.zip
external_llvm-3a386d4929b91678563560505934df4bb9d3d7ff.tar.gz
external_llvm-3a386d4929b91678563560505934df4bb9d3d7ff.tar.bz2
Regression test for PR#330.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13399 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Linker')
-rw-r--r--test/Linker/2004-05-07-TypeResolution1.ll44
-rw-r--r--test/Linker/2004-05-07-TypeResolution2.ll25
2 files changed, 69 insertions, 0 deletions
diff --git a/test/Linker/2004-05-07-TypeResolution1.ll b/test/Linker/2004-05-07-TypeResolution1.ll
new file mode 100644
index 0000000..94ce3d0
--- /dev/null
+++ b/test/Linker/2004-05-07-TypeResolution1.ll
@@ -0,0 +1,44 @@
+; RUN: llvm-as -f < %s > %t1.bc
+; RUN: llvm-as -f < `dirname %s`/2004-05-07-TypeResolution2.ll > %t2.bc
+; RUN: llvm-link -f -o %t3.bc %t1.bc %t2.bc
+
+target endian = little
+target pointersize = 32
+
+ %myint = type opaque
+ %struct2 = type { %struct1 }
+
+ %struct1 = type { int, void (%struct2*)*, %myint *, int (uint *)* }
+
+
+%driver1 = global %struct1 zeroinitializer ; <%struct1*> [#uses=1]
+
+%m1 = external global [1 x sbyte] * ; <%struct.task_struct**> [#uses=0]
+;%m1 = external global uint ; <%struct.task_struct**> [#uses=0]
+%str1 = constant [1 x ubyte] zeroinitializer
+%str2 = constant [2 x ubyte] zeroinitializer
+%str3 = constant [3 x ubyte] zeroinitializer
+%str4 = constant [4 x ubyte] zeroinitializer
+%str5 = constant [5 x ubyte] zeroinitializer
+%str6 = constant [6 x ubyte] zeroinitializer
+%str7 = constant [7 x ubyte] zeroinitializer
+%str8 = constant [8 x ubyte] zeroinitializer
+%str9 = constant [9 x ubyte] zeroinitializer
+%stra = constant [10 x ubyte] zeroinitializer
+%strb = constant [11 x ubyte] zeroinitializer
+%strc = constant [12 x ubyte] zeroinitializer
+%strd = constant [13 x ubyte] zeroinitializer
+%stre = constant [14 x ubyte] zeroinitializer
+%strf = constant [15 x ubyte] zeroinitializer
+%strg = constant [16 x ubyte] zeroinitializer
+%strh = constant [17 x ubyte] zeroinitializer
+
+implementation ; Functions:
+
+declare void %func(%struct2*)
+
+void %tty_init() {
+entry:
+ volatile store void (%struct2*)* %func, void (%struct2 *)** getelementptr (%struct1* %driver1, uint 0, uint 1)
+ ret void
+}
diff --git a/test/Linker/2004-05-07-TypeResolution2.ll b/test/Linker/2004-05-07-TypeResolution2.ll
new file mode 100644
index 0000000..05be611
--- /dev/null
+++ b/test/Linker/2004-05-07-TypeResolution2.ll
@@ -0,0 +1,25 @@
+; This file is used by testlink1.ll, so it doesn't actually do anything itself
+;
+; RUN: echo
+
+target endian = little
+target pointersize = 32
+
+ %myint = type ushort
+ %struct2 = type { %struct1 }
+ %struct1 = type { int, void (%struct2*)*, %myint *, int (uint *)* }
+
+implementation ; Functions:
+
+internal void %f1 (%struct1* %tty) {
+loopentry.preheader:
+
+ ; <void (%struct2*, ubyte)**> [#uses=1]
+ ; <void (%struct2*, ubyte)*> [#uses=0]
+
+ %tmp.2.i.i = getelementptr %struct1* %tty, uint 0, uint 1
+ %tmp.3.i.i = volatile load void (%struct2*)** %tmp.2.i.i
+
+ ret void
+}
+