|  | ; 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 | 
|  | } | 
|  |  |