Check opaque, abstract, and recursive type handling
authorChris Lattner <sabre@nondot.org>
Fri, 7 Sep 2001 20:59:20 +0000 (20:59 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 7 Sep 2001 20:59:20 +0000 (20:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@479 91177308-0d34-0410-b5e6-96231b3b80d8

test/Feature/opaquetypes.ll [new file with mode: 0644]

diff --git a/test/Feature/opaquetypes.ll b/test/Feature/opaquetypes.ll
new file mode 100644 (file)
index 0000000..fcd0999
--- /dev/null
@@ -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
+
+
+