When removing a function from the function set and adding it to deferred, we
[llvm.git] / test / Integer / opaquetypes_bt.ll
blob5771342c97a6bd30d59b915e2b70d5a2557f672f
1 ; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
2 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3 ; RUN: diff %t1.ll %t2.ll
5 ; This test case is used to test opaque type processing, forward references,
6 ; and recursive types.  Oh my.
7
9 %SQ1 = type { i31 }
10 %SQ2 = type { %ITy }
11 %ITy = type i31
14 %CCC = type { \2* }
15 %BBB = type { \2*, \2 * }
16 %AAA = type { \2*, {\2*}, [12x{\2*}], {[1x{\2*}]} }
18 ; Test numbered types
19 type %CCC
20 type %BBB
21 %Composite = type { %0, %1 }
23 ; Test simple opaque type resolution...
24 %i31ty = type i31
26 ; Perform a simple forward reference...
27 %ty1 = type { %ty2, i31 }
28 %ty2 = type float
30 ; Do a recursive type...
31 %list = type { %list * }
32 %listp = type { %listp } *
34 ; Do two mutually recursive types...
35 %TyA = type { %ty2, %TyB * }
36 %TyB = type { double, %TyA * }
38 ; A complex recursive type...
39 %Y = type { {%Y*}, %Y* }
40 %Z = type { { %Z * }, [12x%Z] *, {{{ %Z * }}} }
42 ; More ridiculous test cases...
43 %A = type [ 123x %A*]
44 %M = type %M (%M, %M) *
45 %P = type %P*
47 ; Recursive ptrs
48 %u = type %v*
49 %v = type %u*
51 ; Test the parser for unnamed recursive types...
52 %P1 = type \1 *
53 %Y1 = type { { \3 * }, \2 * }
54 %Z1 = type { { \3 * }, [12x\3] *, { { { \5 * } } } }