From fd84023f5f3998250239d4bcc39d75b46eaff162 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 7 Sep 2001 20:59:20 +0000 Subject: [PATCH] Check opaque, abstract, and recursive type handling git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@479 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Feature/opaquetypes.ll | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 test/Feature/opaquetypes.ll diff --git a/test/Feature/opaquetypes.ll b/test/Feature/opaquetypes.ll new file mode 100644 index 00000000000..fcd0999d4a7 --- /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 + + +