; RUN: llvm-as < %s | llvm-dis > %t1.ll
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
; RUN: diff %t1.ll %t2.ll

define fastcc void @foo() {
        ret void
}

define coldcc void @bar() {
        call fastcc void @foo( )
        ret void
}

define void @structret(ptr sret({ i8 })  %P) {
        call void @structret( ptr sret({ i8 })  %P )
        ret void
}

define void @foo2() {
        ret void
}

define coldcc void @bar2() {
        call fastcc void @foo( )
        ret void
}

define cc42 void @bar3() personality ptr @__gxx_personality_v0 {
  invoke fastcc void @foo( )
    to label %Ok unwind label %U

Ok:
  ret void

U:
  %exn = landingpad {ptr, i32}
            cleanup
  resume { ptr, i32 } %exn
}

define void @bar4() personality ptr @__gxx_personality_v0 {
  call cc42 void @bar( )
  invoke cc42 void @bar3( )
    to label %Ok unwind label %U

Ok:
  ret void

U:
  %exn = landingpad {ptr, i32}
            cleanup
  resume { ptr, i32 } %exn
}

declare ghccc void @ghc_callee()

define void @ghc_caller() {
  call ghccc void @ghc_callee()
  ret void
}

declare i32 @__gxx_personality_v0(...)
