#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int, char *);
void check_exports() {
  __attribute__((weak)) void inline_inline_2decl_only(void);
  printf("%d %s\n", !!inline_inline_2decl_only, "inline_inline_2decl_only");
  __attribute__((weak)) void inline_inline_undeclared(void);
  printf("%d %s\n", !!inline_inline_undeclared, "inline_inline_undeclared");
  __attribute__((weak)) void inline_inline_predeclared(void);
  printf("%d %s\n", !!inline_inline_predeclared, "inline_inline_predeclared");
  __attribute__((weak)) void inline_inline_postdeclared(void);
  printf("%d %s\n", !!inline_inline_postdeclared, "inline_inline_postdeclared");
  __attribute__((weak)) void inline_inline_prepostdeclared(void);
  printf("%d %s\n", !!inline_inline_prepostdeclared,
         "inline_inline_prepostdeclared");
  __attribute__((weak)) void inline_inline_undeclared2(void);
  printf("%d %s\n", !!inline_inline_undeclared2, "inline_inline_undeclared2");
  __attribute__((weak)) void inline_inline_predeclared2(void);
  printf("%d %s\n", !!inline_inline_predeclared2, "inline_inline_predeclared2");
  __attribute__((weak)) void inline_inline_postdeclared2(void);
  printf("%d %s\n", !!inline_inline_postdeclared2,
         "inline_inline_postdeclared2");
  __attribute__((weak)) void inline_inline_prepostdeclared2(void);
  printf("%d %s\n", !!inline_inline_prepostdeclared2,
         "inline_inline_prepostdeclared2");
  __attribute__((weak)) void extern_extern_postdeclared(void);
  printf("%d %s\n", !!extern_extern_postdeclared, "extern_extern_postdeclared");
  __attribute__((weak)) void extern_extern_postdeclared2(void);
  printf("%d %s\n", !!extern_extern_postdeclared2,
         "extern_extern_postdeclared2");
  __attribute__((weak)) void extern_extern_predeclared(void);
  printf("%d %s\n", !!extern_extern_predeclared, "extern_extern_predeclared");
  __attribute__((weak)) void extern_extern_predeclared2(void);
  printf("%d %s\n", !!extern_extern_predeclared2, "extern_extern_predeclared2");
  __attribute__((weak)) void extern_extern_prepostdeclared(void);
  printf("%d %s\n", !!extern_extern_prepostdeclared,
         "extern_extern_prepostdeclared");
  __attribute__((weak)) void extern_extern_prepostdeclared2(void);
  printf("%d %s\n", !!extern_extern_prepostdeclared2,
         "extern_extern_prepostdeclared2");
  __attribute__((weak)) void extern_extern_undeclared(void);
  printf("%d %s\n", !!extern_extern_undeclared, "extern_extern_undeclared");
  __attribute__((weak)) void extern_extern_undeclared2(void);
  printf("%d %s\n", !!extern_extern_undeclared2, "extern_extern_undeclared2");
  __attribute__((weak)) void extern_postdeclared(void);
  printf("%d %s\n", !!extern_postdeclared, "extern_postdeclared");
  __attribute__((weak)) void extern_postdeclared2(void);
  printf("%d %s\n", !!extern_postdeclared2, "extern_postdeclared2");
  __attribute__((weak)) void extern_predeclared(void);
  printf("%d %s\n", !!extern_predeclared, "extern_predeclared");
  __attribute__((weak)) void extern_predeclared2(void);
  printf("%d %s\n", !!extern_predeclared2, "extern_predeclared2");
  __attribute__((weak)) void extern_prepostdeclared(void);
  printf("%d %s\n", !!extern_prepostdeclared, "extern_prepostdeclared");
  __attribute__((weak)) void extern_undeclared(void);
  printf("%d %s\n", !!extern_undeclared, "extern_undeclared");
  __attribute__((weak)) void extern_undeclared2(void);
  printf("%d %s\n", !!extern_undeclared2, "extern_undeclared2");
  __attribute__((weak)) void inst2_extern_inline_postdeclared(void);
  printf("%d %s\n", !!inst2_extern_inline_postdeclared,
         "inst2_extern_inline_postdeclared");
  __attribute__((weak)) void inst2_extern_inline_predeclared(void);
  printf("%d %s\n", !!inst2_extern_inline_predeclared,
         "inst2_extern_inline_predeclared");
  __attribute__((weak)) void inst3_extern_inline_predeclared(void);
  printf("%d %s\n", !!inst3_extern_inline_predeclared,
         "inst3_extern_inline_predeclared");
  __attribute__((weak)) void inst_extern_inline_postdeclared(void);
  printf("%d %s\n", !!inst_extern_inline_postdeclared,
         "inst_extern_inline_postdeclared");
  __attribute__((weak)) void inst_extern_inline_predeclared(void);
  printf("%d %s\n", !!inst_extern_inline_predeclared,
         "inst_extern_inline_predeclared");
  __attribute__((weak)) void main(void);
  printf("%d %s\n", !!main, "main");
  __attribute__((weak)) void noinst_extern_inline_func(void);
  printf("%d %s\n", !!noinst_extern_inline_func, "noinst_extern_inline_func");
  __attribute__((weak)) void noinst_extern_inline_postdeclared(void);
  printf("%d %s\n", !!noinst_extern_inline_postdeclared,
         "noinst_extern_inline_postdeclared");
  __attribute__((weak)) void noinst_extern_inline_postdeclared2(void);
  printf("%d %s\n", !!noinst_extern_inline_postdeclared2,
         "noinst_extern_inline_postdeclared2");
  __attribute__((weak)) void noinst_extern_inline_undeclared(void);
  printf("%d %s\n", !!noinst_extern_inline_undeclared,
         "noinst_extern_inline_undeclared");
  __attribute__((weak)) void noinst_static_inline_postdeclared(void);
  printf("%d %s\n", !!noinst_static_inline_postdeclared,
         "noinst_static_inline_postdeclared");
  __attribute__((weak)) void noinst2_static_inline_postdeclared(void);
  printf("%d %s\n", !!noinst2_static_inline_postdeclared,
         "noinst2_static_inline_postdeclared");
  __attribute__((weak)) void noinst_static_inline_predeclared(void);
  printf("%d %s\n", !!noinst_static_inline_predeclared,
         "noinst_static_inline_predeclared");
  __attribute__((weak)) void noinst2_static_inline_predeclared(void);
  printf("%d %s\n", !!noinst2_static_inline_predeclared,
         "noinst2_static_inline_predeclared");
  __attribute__((weak)) void static_func(void);
  printf("%d %s\n", !!static_func, "static_func");
}


x86 assembly (clang, -O0):
<check_exports>:
push   %rbp
mov    %rsp,%rbp
mov    0x2dc5(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xed5(%rip),%rdi
lea    0xed5(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ea2(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xeb2(%rip),%rdi
lea    0xecb(%rip),%rdx
call   1030 <printf@plt>
mov    0x2da7(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xe8f(%rip),%rdi
lea    0xec1(%rip),%rdx
call   1030 <printf@plt>
mov    0x2dc4(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xe6c(%rip),%rdi
lea    0xeb8(%rip),%rdx
call   1030 <printf@plt>
mov    0x2e49(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xe49(%rip),%rdi
lea    0xeb0(%rip),%rdx
call   1030 <printf@plt>
mov    0x2da6(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xe26(%rip),%rdi
lea    0xeab(%rip),%rdx
call   1030 <printf@plt>
mov    0x2dc3(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xe03(%rip),%rdi
lea    0xea2(%rip),%rdx
call   1030 <printf@plt>
mov    0x2d68(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xde0(%rip),%rdi
lea    0xe9a(%rip),%rdx
call   1030 <printf@plt>
mov    0x2cdd(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xdbd(%rip),%rdi
lea    0xe93(%rip),%rdx
call   1030 <printf@plt>
mov    0x2d62(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xd9a(%rip),%rdi
lea    0xe8f(%rip),%rdx
call   1030 <printf@plt>
mov    0x2c57(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xd77(%rip),%rdi
lea    0xe87(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ccc(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xd54(%rip),%rdi
lea    0xe80(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ca1(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xd31(%rip),%rdi
lea    0xe77(%rip),%rdx
call   1030 <printf@plt>
mov    0x2c46(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xd0e(%rip),%rdi
lea    0xe6f(%rip),%rdx
call   1030 <printf@plt>
mov    0x2be3(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xceb(%rip),%rdi
lea    0xe6a(%rip),%rdx
call   1030 <printf@plt>
mov    0x2c70(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xcc8(%rip),%rdi
lea    0xe66(%rip),%rdx
call   1030 <printf@plt>
mov    0x2b8d(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xca5(%rip),%rdi
lea    0xe5c(%rip),%rdx
call   1030 <printf@plt>
mov    0x2bea(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xc82(%rip),%rdi
lea    0xd7e(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ba7(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xc5f(%rip),%rdi
lea    0xd76(%rip),%rdx
call   1030 <printf@plt>
mov    0x2bcc(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xc3c(%rip),%rdi
lea    0xd6f(%rip),%rdx
call   1030 <printf@plt>
mov    0x2af1(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xc19(%rip),%rdi
lea    0xd66(%rip),%rdx
call   1030 <printf@plt>
mov    0x2b46(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xbf6(%rip),%rdi
lea    0xd5e(%rip),%rdx
call   1030 <printf@plt>
mov    0x2b03(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xbd3(%rip),%rdi
lea    0xd78(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ab8(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xbb0(%rip),%rdi
lea    0xd6e(%rip),%rdx
call   1030 <printf@plt>
mov    0x2b25(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xb8d(%rip),%rdi
lea    0xd5e(%rip),%rdx
call   1030 <printf@plt>
mov    0x2a2a(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xb6a(%rip),%rdi
lea    0xd5c(%rip),%rdx
call   1030 <printf@plt>
mov    0x2a47(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xb47(%rip),%rdi
lea    0xd59(%rip),%rdx
call   1030 <printf@plt>
mov    0x2a34(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xb24(%rip),%rdi
lea    0xd96(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ad1(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xb01(%rip),%rdi
lea    0xd33(%rip),%rdx
call   1030 <printf@plt>
mov    0x2a8e(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xade(%rip),%rdi
lea    0xd2f(%rip),%rdx
call   1030 <printf@plt>
mov    0x2ac3(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xabb(%rip),%rdi
lea    0xd11(%rip),%rdx
call   1030 <printf@plt>
mov    0x2968(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xa98(%rip),%rdi
lea    0xd08(%rip),%rdx
call   1030 <printf@plt>
mov    0x29d5(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xa75(%rip),%rdi
lea    0xd07(%rip),%rdx
call   1030 <printf@plt>
mov    0x2a2a(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xa52(%rip),%rdi
lea    0xd07(%rip),%rdx
call   1030 <printf@plt>
mov    0x29cf(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xa2f(%rip),%rdi
lea    0xd04(%rip),%rdx
call   1030 <printf@plt>
mov    0x28c4(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0xa0c(%rip),%rdi
lea    0xd03(%rip),%rdx
call   1030 <printf@plt>
mov    0x29a1(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0x9e9(%rip),%rdi
lea    0xd03(%rip),%rdx
call   1030 <printf@plt>
mov    0x29a6(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0x9c6(%rip),%rdi
lea    0xd01(%rip),%rdx
call   1030 <printf@plt>
mov    0x28cb(%rip),%rax
test   %rax,%rax
setne  %al
movzbl %al,%esi
lea    0x9a3(%rip),%rdi
lea    0xd00(%rip),%rdx
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_exports>:
push   %rbx
xor    %esi,%esi
cmpq   $0x0,0x2dc5(%rip)
setne  %sil
lea    0xeda(%rip),%rbx
lea    0xeda(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2ea1(%rip)
setne  %sil
lea    0xed6(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2dac(%rip)
setne  %sil
lea    0xed2(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2dcf(%rip)
setne  %sil
lea    0xecf(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2e5a(%rip)
setne  %sil
lea    0xecd(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2dbd(%rip)
setne  %sil
lea    0xece(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2de0(%rip)
setne  %sil
lea    0xecb(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2d8b(%rip)
setne  %sil
lea    0xec9(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2d06(%rip)
setne  %sil
lea    0xec8(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2d91(%rip)
setne  %sil
lea    0xeca(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c8c(%rip)
setne  %sil
lea    0xec8(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2d07(%rip)
setne  %sil
lea    0xec7(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2ce2(%rip)
setne  %sil
lea    0xec4(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c8d(%rip)
setne  %sil
lea    0xec2(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c30(%rip)
setne  %sil
lea    0xec3(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2cc3(%rip)
setne  %sil
lea    0xec5(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2be6(%rip)
setne  %sil
lea    0xec1(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c49(%rip)
setne  %sil
lea    0xde9(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c0c(%rip)
setne  %sil
lea    0xde7(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2c37(%rip)
setne  %sil
lea    0xde6(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b62(%rip)
setne  %sil
lea    0xde3(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2bbd(%rip)
setne  %sil
lea    0xde1(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b80(%rip)
setne  %sil
lea    0xe01(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b3b(%rip)
setne  %sil
lea    0xdfd(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2bae(%rip)
setne  %sil
lea    0xdf3(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2ab9(%rip)
setne  %sil
lea    0xdf7(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2adc(%rip)
setne  %sil
lea    0xdfa(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2acf(%rip)
setne  %sil
lea    0xe3d(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b72(%rip)
setne  %sil
lea    0xde0(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b35(%rip)
setne  %sil
lea    0xde2(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2b70(%rip)
setne  %sil
lea    0xdca(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2a1b(%rip)
setne  %sil
lea    0xdc7(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2a8e(%rip)
setne  %sil
lea    0xdcc(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2ae9(%rip)
setne  %sil
lea    0xdd2(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2a94(%rip)
setne  %sil
lea    0xdd5(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x298f(%rip)
setne  %sil
lea    0xdda(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2a72(%rip)
setne  %sil
lea    0xde0(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x2a7d(%rip)
setne  %sil
lea    0xde4(%rip),%rdx
mov    %rbx,%rdi
call   1030 <printf@plt>
xor    %esi,%esi
cmpq   $0x0,0x29a8(%rip)
setne  %sil
lea    0xde9(%rip),%rdx
mov    %rbx,%rdi
pop    %rbx
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [7 x i8] c"%d %s\0A\00"
@.str.1 = [25 x i8] c"inline_inline_2decl_only\00"
@.str.2 = [25 x i8] c"inline_inline_undeclared\00"
@.str.3 = [26 x i8] c"inline_inline_predeclared\00"
@.str.4 = [27 x i8] c"inline_inline_postdeclared\00"
@.str.5 = [30 x i8] c"inline_inline_prepostdeclared\00"
@.str.6 = [26 x i8] c"inline_inline_undeclared2\00"
@.str.7 = [27 x i8] c"inline_inline_predeclared2\00"
@.str.8 = [28 x i8] c"inline_inline_postdeclared2\00"
@.str.9 = [31 x i8] c"inline_inline_prepostdeclared2\00"
@.str.10 = [27 x i8] c"extern_extern_postdeclared\00"
@.str.11 = [28 x i8] c"extern_extern_postdeclared2\00"
@.str.12 = [26 x i8] c"extern_extern_predeclared\00"
@.str.13 = [27 x i8] c"extern_extern_predeclared2\00"
@.str.14 = [30 x i8] c"extern_extern_prepostdeclared\00"
@.str.15 = [31 x i8] c"extern_extern_prepostdeclared2\00"
@.str.16 = [25 x i8] c"extern_extern_undeclared\00"
@.str.17 = [26 x i8] c"extern_extern_undeclared2\00"
@.str.18 = [20 x i8] c"extern_postdeclared\00"
@.str.19 = [21 x i8] c"extern_postdeclared2\00"
@.str.20 = [19 x i8] c"extern_predeclared\00"
@.str.21 = [20 x i8] c"extern_predeclared2\00"
@.str.22 = [23 x i8] c"extern_prepostdeclared\00"
@.str.23 = [18 x i8] c"extern_undeclared\00"
@.str.24 = [19 x i8] c"extern_undeclared2\00"
@.str.25 = [33 x i8] c"inst2_extern_inline_postdeclared\00"
@.str.26 = [32 x i8] c"inst2_extern_inline_predeclared\00"
@.str.27 = [32 x i8] c"inst3_extern_inline_predeclared\00"
@.str.28 = [32 x i8] c"inst_extern_inline_postdeclared\00"
@.str.29 = [31 x i8] c"inst_extern_inline_predeclared\00"
@.str.30 = [5 x i8] c"main\00"
@.str.31 = [26 x i8] c"noinst_extern_inline_func\00"
@.str.32 = [34 x i8] c"noinst_extern_inline_postdeclared\00"
@.str.33 = [35 x i8] c"noinst_extern_inline_postdeclared2\00"
@.str.34 = [32 x i8] c"noinst_extern_inline_undeclared\00"
@.str.35 = [34 x i8] c"noinst_static_inline_postdeclared\00"
@.str.36 = [35 x i8] c"noinst2_static_inline_postdeclared\00"
@.str.37 = [33 x i8] c"noinst_static_inline_predeclared\00"
@.str.38 = [34 x i8] c"noinst2_static_inline_predeclared\00"
@.str.39 = [12 x i8] c"static_func\00"
define void @check_exports() {
%1 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_2decl_only, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_prepostdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.9, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.10, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.13, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.14, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_prepostdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.16, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.17, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.18, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.19, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.20, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.23, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst2_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.25, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst2_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.26, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst3_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.27, i64 0, i64 0))
%28 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.28, i64 0, i64 0))
%29 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.29, i64 0, i64 0))
%30 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @main, void ()* null) to i32), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0))
%31 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_func, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.31, i64 0, i64 0))
%32 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.32, i64 0, i64 0))
%33 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.33, i64 0, i64 0))
%34 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.34, i64 0, i64 0))
%35 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_static_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.35, i64 0, i64 0))
%36 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst2_static_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
%37 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_static_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.37, i64 0, i64 0))
%38 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst2_static_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.38, i64 0, i64 0))
%39 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @static_func, void ()* null) to i32), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.39, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [7 x i8] c"%d %s\0A\00"
@.str.1 = [25 x i8] c"inline_inline_2decl_only\00"
@.str.2 = [25 x i8] c"inline_inline_undeclared\00"
@.str.3 = [26 x i8] c"inline_inline_predeclared\00"
@.str.4 = [27 x i8] c"inline_inline_postdeclared\00"
@.str.5 = [30 x i8] c"inline_inline_prepostdeclared\00"
@.str.6 = [26 x i8] c"inline_inline_undeclared2\00"
@.str.7 = [27 x i8] c"inline_inline_predeclared2\00"
@.str.8 = [28 x i8] c"inline_inline_postdeclared2\00"
@.str.9 = [31 x i8] c"inline_inline_prepostdeclared2\00"
@.str.10 = [27 x i8] c"extern_extern_postdeclared\00"
@.str.11 = [28 x i8] c"extern_extern_postdeclared2\00"
@.str.12 = [26 x i8] c"extern_extern_predeclared\00"
@.str.13 = [27 x i8] c"extern_extern_predeclared2\00"
@.str.14 = [30 x i8] c"extern_extern_prepostdeclared\00"
@.str.15 = [31 x i8] c"extern_extern_prepostdeclared2\00"
@.str.16 = [25 x i8] c"extern_extern_undeclared\00"
@.str.17 = [26 x i8] c"extern_extern_undeclared2\00"
@.str.18 = [20 x i8] c"extern_postdeclared\00"
@.str.19 = [21 x i8] c"extern_postdeclared2\00"
@.str.20 = [19 x i8] c"extern_predeclared\00"
@.str.21 = [20 x i8] c"extern_predeclared2\00"
@.str.22 = [23 x i8] c"extern_prepostdeclared\00"
@.str.23 = [18 x i8] c"extern_undeclared\00"
@.str.24 = [19 x i8] c"extern_undeclared2\00"
@.str.25 = [33 x i8] c"inst2_extern_inline_postdeclared\00"
@.str.26 = [32 x i8] c"inst2_extern_inline_predeclared\00"
@.str.27 = [32 x i8] c"inst3_extern_inline_predeclared\00"
@.str.28 = [32 x i8] c"inst_extern_inline_postdeclared\00"
@.str.29 = [31 x i8] c"inst_extern_inline_predeclared\00"
@.str.30 = [5 x i8] c"main\00"
@.str.31 = [26 x i8] c"noinst_extern_inline_func\00"
@.str.32 = [34 x i8] c"noinst_extern_inline_postdeclared\00"
@.str.33 = [35 x i8] c"noinst_extern_inline_postdeclared2\00"
@.str.34 = [32 x i8] c"noinst_extern_inline_undeclared\00"
@.str.35 = [34 x i8] c"noinst_static_inline_postdeclared\00"
@.str.36 = [35 x i8] c"noinst2_static_inline_postdeclared\00"
@.str.37 = [33 x i8] c"noinst_static_inline_predeclared\00"
@.str.38 = [34 x i8] c"noinst2_static_inline_predeclared\00"
@.str.39 = [12 x i8] c"static_func\00"
define void @check_exports() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_2decl_only, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%3 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i64 0, i64 0))
%4 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0))
%5 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.5, i64 0, i64 0))
%6 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0))
%7 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0))
%8 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0))
%9 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inline_inline_prepostdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.9, i64 0, i64 0))
%10 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.10, i64 0, i64 0))
%11 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0))
%12 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0))
%13 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.13, i64 0, i64 0))
%14 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.14, i64 0, i64 0))
%15 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_prepostdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0))
%16 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.16, i64 0, i64 0))
%17 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_extern_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.17, i64 0, i64 0))
%18 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.18, i64 0, i64 0))
%19 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.19, i64 0, i64 0))
%20 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.20, i64 0, i64 0))
%21 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_predeclared2, void ()* null) to i32), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.21, i64 0, i64 0))
%22 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_prepostdeclared, void ()* null) to i32), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0))
%23 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.23, i64 0, i64 0))
%24 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @extern_undeclared2, void ()* null) to i32), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0))
%25 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst2_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.25, i64 0, i64 0))
%26 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst2_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.26, i64 0, i64 0))
%27 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst3_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.27, i64 0, i64 0))
%28 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.28, i64 0, i64 0))
%29 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @inst_extern_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.29, i64 0, i64 0))
%30 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @main, void ()* null) to i32), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0))
%31 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_func, void ()* null) to i32), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.31, i64 0, i64 0))
%32 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.32, i64 0, i64 0))
%33 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_postdeclared2, void ()* null) to i32), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.33, i64 0, i64 0))
%34 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_extern_inline_undeclared, void ()* null) to i32), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.34, i64 0, i64 0))
%35 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_static_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.35, i64 0, i64 0))
%36 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst2_static_inline_postdeclared, void ()* null) to i32), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
%37 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst_static_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.37, i64 0, i64 0))
%38 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @noinst2_static_inline_predeclared, void ()* null) to i32), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.38, i64 0, i64 0))
%39 = tail call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32 zext (i1 icmp ne (void ()* @static_func, void ()* null) to i32), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.39, i64 0, i64 0))
ret void
}