; RUN: llvm-as %s -o %t1.bc
; RUN: llvm-as < %p/2004-05-07-TypeResolution2.ll -o %t2.bc
; RUN: llvm-link -o %t3.bc %t1.bc %t2.bc

target datalayout = "e-p:32:32"
	%myint = type opaque
	%struct1 = type { i32, void (%struct2*)*, %myint*, i32 (i32*)* }
	%struct2 = type { %struct1 }
@driver1 = global %struct1 zeroinitializer		; <%struct1*> [#uses=1]
@m1 = external global [1 x i8]*		; <[1 x i8]**> [#uses=0]
@str1 = constant [1 x i8] zeroinitializer		; <[1 x i8]*> [#uses=0]
@str2 = constant [2 x i8] zeroinitializer		; <[2 x i8]*> [#uses=0]
@str3 = constant [3 x i8] zeroinitializer		; <[3 x i8]*> [#uses=0]
@str4 = constant [4 x i8] zeroinitializer		; <[4 x i8]*> [#uses=0]
@str5 = constant [5 x i8] zeroinitializer		; <[5 x i8]*> [#uses=0]
@str6 = constant [6 x i8] zeroinitializer		; <[6 x i8]*> [#uses=0]
@str7 = constant [7 x i8] zeroinitializer		; <[7 x i8]*> [#uses=0]
@str8 = constant [8 x i8] zeroinitializer		; <[8 x i8]*> [#uses=0]
@str9 = constant [9 x i8] zeroinitializer		; <[9 x i8]*> [#uses=0]
@stra = constant [10 x i8] zeroinitializer		; <[10 x i8]*> [#uses=0]
@strb = constant [11 x i8] zeroinitializer		; <[11 x i8]*> [#uses=0]
@strc = constant [12 x i8] zeroinitializer		; <[12 x i8]*> [#uses=0]
@strd = constant [13 x i8] zeroinitializer		; <[13 x i8]*> [#uses=0]
@stre = constant [14 x i8] zeroinitializer		; <[14 x i8]*> [#uses=0]
@strf = constant [15 x i8] zeroinitializer		; <[15 x i8]*> [#uses=0]
@strg = constant [16 x i8] zeroinitializer		; <[16 x i8]*> [#uses=0]
@strh = constant [17 x i8] zeroinitializer		; <[17 x i8]*> [#uses=0]

declare void @func(%struct2*)

define void @tty_init() {
entry:
	volatile store void (%struct2*)* @func, void (%struct2*)** getelementptr (%struct1* @driver1, i64 0, i32 1)
	ret void
}
