|  | ; RUN: opt -passes=mergefunc -S < %s | FileCheck %s | 
|  |  | 
|  | ; CHECK-LABEL: @int_ptr_arg_different | 
|  | ; CHECK-NEXT: call void asm | 
|  |  | 
|  | ; CHECK-DAG: @int_ptr_null | 
|  | ; CHECK-DAG: tail call void @float_ptr_null() | 
|  |  | 
|  | ; CHECK-DAG: @int_ptr_arg_same | 
|  | ; CHECK-DAG: tail call void @float_ptr_arg_same(ptr %0) | 
|  |  | 
|  | ; Used to satisfy minimum size limit | 
|  | declare void @stuff() | 
|  |  | 
|  | ; Can be merged | 
|  | define void @float_ptr_null() { | 
|  | call void asm "nop", "r"(ptr null) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @int_ptr_null() { | 
|  | call void asm "nop", "r"(ptr null) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | ; Can be merged (uses same argument differing by pointer type) | 
|  | define void @float_ptr_arg_same(ptr) { | 
|  | call void asm "nop", "r"(ptr %0) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @int_ptr_arg_same(ptr) { | 
|  | call void asm "nop", "r"(ptr %0) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | ; Can not be merged (uses different arguments) | 
|  | define void @float_ptr_arg_different(ptr, ptr) { | 
|  | call void asm "nop", "r"(ptr %0) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @int_ptr_arg_different(ptr, ptr) { | 
|  | call void asm "nop", "r"(ptr %1) | 
|  | call void @stuff() | 
|  | ret void | 
|  | } |