; 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({ i8 }* sret  %P) {
        call void @structret( { i8 }* sret  %P )
        ret void
}

define void @foo2() {
        ret void
}

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

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

Ok:
  ret void

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

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

Ok:
  ret void

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

declare ghccc void @ghc_callee()

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

declare hhvm_ccc void @hhvm_c_callee()

define hhvmcc void @hhvm_caller() {
  call hhvm_ccc void @hhvm_c_callee()
  ret void
}

declare i32 @__gxx_personality_v0(...)
