| ; RUN: llvm-as < %s | llvm-dis > %t1.ll | 
 | ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll | 
 | ; RUN: diff %t1.ll %t2.ll | 
 |  | 
 | %myty = type i32  | 
 | %myfn = type float (i32,double,i32,i16) | 
 | %0 = type i32(%myfn*) | 
 | %1 = type i32(i32) | 
 | %2 = type i32(i32(i32)*) | 
 |  | 
 |   %thisfuncty = type i32 (i32) * | 
 |  | 
 | declare void @F(%thisfuncty, %thisfuncty, %thisfuncty) | 
 |  | 
 | define i32 @zarro(i32 %Func) { | 
 | Startup: | 
 |         add i32 0, 10           ; <i32>:0 [#uses=0] | 
 |         ret i32 0 | 
 | } | 
 |  | 
 | define i32 @test(i32) { | 
 |         call void @F( %thisfuncty @zarro, %thisfuncty @test, %thisfuncty @foozball ) | 
 |         ret i32 0 | 
 | } | 
 |  | 
 | define i32 @foozball(i32) { | 
 |         ret i32 0 | 
 | } | 
 |  |