| ; RUN: llc -o - %s | FileCheck %s | 
 | ; RUN: llc -global-isel -verify-machineinstrs -o - %s | FileCheck %s | 
 | target triple="aarch64--" | 
 |  | 
 | declare void @somefunc() | 
 | define preserve_mostcc void @test_ccmismatch_notail() { | 
 | ; Ensure that no tail call is used here, as the called function somefunc does | 
 | ; not preserve enough registers for preserve_mostcc. | 
 | ; CHECK-LABEL: test_ccmismatch_notail: | 
 | ; CHECK-NOT: b somefunc | 
 | ; CHECK: bl somefunc | 
 |   tail call void @somefunc() | 
 |   ret void | 
 | } | 
 |  | 
 | declare preserve_mostcc void @some_preserve_most_func() | 
 | define void @test_ccmismatch_tail() { | 
 | ; We can perform a tail call here, because some_preserve_most_func preserves | 
 | ; all registers necessary for test_ccmismatch_tail. | 
 | ; CHECK-LABEL: test_ccmismatch_tail: | 
 | ; CHECK-NOT: bl some_preserve_most_func | 
 | ; CHECK: b some_preserve_most_func | 
 |   tail call preserve_mostcc void @some_preserve_most_func() | 
 |   ret void | 
 | } |