summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-09-07 20:59:20 +0000
committerChris Lattner <sabre@nondot.org>2001-09-07 20:59:20 +0000
commitfd84023f5f3998250239d4bcc39d75b46eaff162 (patch)
tree7130f75f7828bb3f617a1bca3620d27e13abfb63 /test
parentfcc8897ec13da5dd3c49d8b71711a62bbdf198a0 (diff)
downloadllvm-fd84023f5f3998250239d4bcc39d75b46eaff162.tar.gz
llvm-fd84023f5f3998250239d4bcc39d75b46eaff162.tar.bz2
llvm-fd84023f5f3998250239d4bcc39d75b46eaff162.tar.xz
Check opaque, abstract, and recursive type handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@479 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Feature/opaquetypes.ll57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/Feature/opaquetypes.ll b/test/Feature/opaquetypes.ll
new file mode 100644
index 0000000000..fcd0999d4a
--- /dev/null
+++ b/test/Feature/opaquetypes.ll
@@ -0,0 +1,57 @@
+; This test case is used to test opaque type processing, forward references,
+; and recursive types. Oh my.
+;
+
+%SQ1 = type { int }
+%ITy = type opaque
+%SQ2 = type { %ITy }
+%ITy = type int
+
+
+%CCC = type { \2* }
+%BBB = type { \2*, \2 * }
+%AAA = type { \2*, {\2*}, [{\2*}], {[1x{\2*}]} }
+
+; Test numbered types
+type %CCC
+type %BBB
+%Composite = type { %0, %1 }
+
+; Test simple opaque type resolution...
+%intty = type opaque
+%intty = type int
+
+; Perform a simple forward reference...
+%ty1 = type { %ty2, int }
+%ty2 = type float
+
+; Do a recursive type...
+%list = type { %list * }
+%listp = type { %listp } *
+
+; Do two mutually recursive types...
+%TyA = type { %ty2, %TyB * }
+%TyB = type { double, %TyA * }
+
+; A complex recursive type...
+%Y = type { {%Y*}, %Y* }
+%Z = type { { %Z * }, [%Z] *, {{{ %Z * }}} }
+
+; More ridiculous test cases...
+%A = type [ 123x %A*]
+%M = type %M (%M, %M) *
+%P = type %P*
+
+; Recursive ptrs
+%u = type %v*
+%v = type %u*
+
+; Test the parser for unnamed recursive types...
+%P1 = type \1 *
+%Y1 = type { { \3 * }, \2 * }
+%Z1 = type { { \3 * }, [\3] *, { { { \5 * } } } }
+
+implementation
+
+
+