void avahi_warn_unsupported(const char *function) {
  avahi_warn("The program '%s' called '%s()' which is not supported (or only "
             "supported partially) in the "
             "Apple Bonjour"
             " compatibility layer of Avahi.",
             avahi_exe_name(), function);
  avahi_warn("Please fix your application to use the native API of Avahi!");
  avahi_warn("For more information see <http://0pointer.de/avahi-compat?s="
             "libdns_sd"
             "&e=%s&f=%s>",
             avahi_exe_name(), function);
}


x86 assembly (clang, -O0):
<avahi_warn_unsupported>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <avahi_exe_name@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rdx
lea    0xec0(%rip),%rdi
mov    $0x0,%al
call   1040 <avahi_warn@plt>
lea    0xf39(%rip),%rdi
mov    $0x0,%al
call   1040 <avahi_warn@plt>
mov    $0x0,%al
call   1030 <avahi_exe_name@plt>
mov    %eax,%esi
mov    -0x8(%rbp),%rdx
lea    0xf5a(%rip),%rdi
mov    $0x0,%al
call   1040 <avahi_warn@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<avahi_warn_unsupported>:
push   %rbx
mov    %rdi,%rbx
xor    %eax,%eax
call   1030 <avahi_exe_name@plt>
lea    0xece(%rip),%rdi
mov    %eax,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <avahi_warn@plt>
lea    0xf42(%rip),%rdi
xor    %eax,%eax
call   1040 <avahi_warn@plt>
xor    %eax,%eax
call   1030 <avahi_exe_name@plt>
lea    0xf69(%rip),%rdi
mov    %eax,%esi
mov    %rbx,%rdx
xor    %eax,%eax
pop    %rbx
jmp    1040 <avahi_warn@plt>

LLVM IR (-O0):
@.str = [135 x i8] c"The program '%s' called '%s()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.\00"
@.str.1 = [60 x i8] c"Please fix your application to use the native API of Avahi!\00"
@.str.2 = [81 x i8] c"For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=%s&f=%s>\00"
define void @avahi_warn_unsupported(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = call i32 (...) @avahi_exe_name()
%4 = load i8*, i8** %2
%5 = call i32 (i8*, i32, i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, i32, i8*, ...)*)(i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str, i64 0, i64 0), i32 %3, i8* %4)
%6 = call i32 (i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, ...)*)(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 (...) @avahi_exe_name()
%8 = load i8*, i8** %2
%9 = call i32 (i8*, i32, i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, i32, i8*, ...)*)(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.2, i64 0, i64 0), i32 %7, i8* %8)
ret void
}

LLVM IR (-O2):
@.str = [135 x i8] c"The program '%s' called '%s()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.\00"
@.str.1 = [60 x i8] c"Please fix your application to use the native API of Avahi!\00"
@.str.2 = [81 x i8] c"For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=%s&f=%s>\00"
define void @avahi_warn_unsupported(i8* %0) {
%2 = tail call i32 (...) @avahi_exe_name()
%3 = tail call i32 (i8*, i32, i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, i32, i8*, ...)*)(i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str, i64 0, i64 0), i32 %2, i8* %0)
%4 = tail call i32 (i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, ...)*)(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.1, i64 0, i64 0))
%5 = tail call i32 (...) @avahi_exe_name()
%6 = tail call i32 (i8*, i32, i8*, ...) bitcast (i32 (...)* @avahi_warn to i32 (i8*, i32, i8*, ...)*)(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.2, i64 0, i64 0), i32 %5, i8* %0)
ret void
}