llvm.org GIT mirror llvm / release_39 test / Feature / callingconventions.ll
release_39

Tree @release_39 (Download .tar.gz)

callingconventions.ll @release_39

9bc243b
6dc7e68
 
 
9bc243b
 
6dc7e68
 
9bc243b
 
 
6dc7e68
 
9bc243b
 
 
a831a6c
 
9bc243b
 
6dc7e68
 
9bc243b
 
 
6dc7e68
 
cc714e2
76cf779
 
6dc7e68
76cf779
 
6dc7e68
76cf779
cc714e2
76cf779
 
6dc7e68
 
cc714e2
76cf779
 
 
9bc243b
76cf779
 
9bc243b
76cf779
cc714e2
76cf779
 
9bc243b
6dc7e68
03c735b
 
 
 
 
 
 
3b3752c
 
 
 
 
 
 
76cf779
; 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(...)