#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*/ arrow();
int /*<<< orphan*/ assign();
int /*<<< orphan*/ bitfield_basic();
int /*<<< orphan*/ bitfield_initializer();
int /*<<< orphan*/ bitfield_mix();
int /*<<< orphan*/ bitfield_union();
int /*<<< orphan*/ bitfield_unnamed();
int /*<<< orphan*/ empty_struct();
int /*<<< orphan*/ incomplete();
int /*<<< orphan*/ t1();
int /*<<< orphan*/ t10();
int /*<<< orphan*/ t11();
int /*<<< orphan*/ t12();
int /*<<< orphan*/ t13();
int /*<<< orphan*/ t14();
int /*<<< orphan*/ t2();
int /*<<< orphan*/ t3();
int /*<<< orphan*/ t4();
int /*<<< orphan*/ t5();
int /*<<< orphan*/ t6();
int /*<<< orphan*/ t7();
int /*<<< orphan*/ t8();
int /*<<< orphan*/ t9();
int /*<<< orphan*/ test1();
int /*<<< orphan*/ test2();
int /*<<< orphan*/ test3();
int /*<<< orphan*/ test4();
int /*<<< orphan*/ test5();
int /*<<< orphan*/ test6();
int /*<<< orphan*/ test7();
int /*<<< orphan*/ test8();
int /*<<< orphan*/ test9();
int /*<<< orphan*/ test_bitfield_mix();
int /*<<< orphan*/ test_bitfield_static_initializer();
int /*<<< orphan*/ test_offsetof();
int /*<<< orphan*/ test_unnamed_bitfield();
int /*<<< orphan*/ unnamed();
int main() {
  test1();
  test2();
  test3();
  test4();
  test5();
  test6();
  test7();
  test8();
  test9();
  t1();
  t2();
  t3();
  t4();
  t5();
  t6();
  t7();
  t8();
  t9();
  t10();
  t11();
  t12();
  t13();
  t14();
  unnamed();
  assign();
  arrow();
  incomplete();
  bitfield_basic();
  bitfield_mix();
  bitfield_union();
  bitfield_unnamed();
  bitfield_initializer();
  test_offsetof();
  test_bitfield_static_initializer();
  test_bitfield_mix();
  test_unnamed_bitfield();
  empty_struct();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1110 <test1@plt>
mov    $0x0,%al
call   1200 <test2@plt>
mov    $0x0,%al
call   1100 <test3@plt>
mov    $0x0,%al
call   11f0 <test4@plt>
mov    $0x0,%al
call   10e0 <test5@plt>
mov    $0x0,%al
call   11e0 <test6@plt>
mov    $0x0,%al
call   10d0 <test7@plt>
mov    $0x0,%al
call   1250 <test8@plt>
mov    $0x0,%al
call   1140 <test9@plt>
mov    $0x0,%al
call   10b0 <t1@plt>
mov    $0x0,%al
call   11b0 <t2@plt>
mov    $0x0,%al
call   10c0 <t3@plt>
mov    $0x0,%al
call   11c0 <t4@plt>
mov    $0x0,%al
call   10f0 <t5@plt>
mov    $0x0,%al
call   11d0 <t6@plt>
mov    $0x0,%al
call   1120 <t7@plt>
mov    $0x0,%al
call   1210 <t8@plt>
mov    $0x0,%al
call   1130 <t9@plt>
mov    $0x0,%al
call   1170 <t10@plt>
mov    $0x0,%al
call   1070 <t11@plt>
mov    $0x0,%al
call   1180 <t12@plt>
mov    $0x0,%al
call   1060 <t13@plt>
mov    $0x0,%al
call   1190 <t14@plt>
mov    $0x0,%al
call   1050 <unnamed@plt>
mov    $0x0,%al
call   1240 <assign@plt>
mov    $0x0,%al
call   1150 <arrow@plt>
mov    $0x0,%al
call   1260 <incomplete@plt>
mov    $0x0,%al
call   11a0 <bitfield_basic@plt>
mov    $0x0,%al
call   10a0 <bitfield_mix@plt>
mov    $0x0,%al
call   1160 <bitfield_union@plt>
mov    $0x0,%al
call   1270 <bitfield_unnamed@plt>
mov    $0x0,%al
call   1220 <bitfield_initializer@plt>
mov    $0x0,%al
call   1030 <test_offsetof@plt>
mov    $0x0,%al
call   1080 <test_bitfield_static_initializer@plt>
mov    $0x0,%al
call   1230 <test_bitfield_mix@plt>
mov    $0x0,%al
call   1090 <test_unnamed_bitfield@plt>
mov    $0x0,%al
call   1040 <empty_struct@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   1110 <test1@plt>
xor    %eax,%eax
call   1200 <test2@plt>
xor    %eax,%eax
call   1100 <test3@plt>
xor    %eax,%eax
call   11f0 <test4@plt>
xor    %eax,%eax
call   10e0 <test5@plt>
xor    %eax,%eax
call   11e0 <test6@plt>
xor    %eax,%eax
call   10d0 <test7@plt>
xor    %eax,%eax
call   1250 <test8@plt>
xor    %eax,%eax
call   1140 <test9@plt>
xor    %eax,%eax
call   10b0 <t1@plt>
xor    %eax,%eax
call   11b0 <t2@plt>
xor    %eax,%eax
call   10c0 <t3@plt>
xor    %eax,%eax
call   11c0 <t4@plt>
xor    %eax,%eax
call   10f0 <t5@plt>
xor    %eax,%eax
call   11d0 <t6@plt>
xor    %eax,%eax
call   1120 <t7@plt>
xor    %eax,%eax
call   1210 <t8@plt>
xor    %eax,%eax
call   1130 <t9@plt>
xor    %eax,%eax
call   1170 <t10@plt>
xor    %eax,%eax
call   1070 <t11@plt>
xor    %eax,%eax
call   1180 <t12@plt>
xor    %eax,%eax
call   1060 <t13@plt>
xor    %eax,%eax
call   1190 <t14@plt>
xor    %eax,%eax
call   1050 <unnamed@plt>
xor    %eax,%eax
call   1240 <assign@plt>
xor    %eax,%eax
call   1150 <arrow@plt>
xor    %eax,%eax
call   1260 <incomplete@plt>
xor    %eax,%eax
call   11a0 <bitfield_basic@plt>
xor    %eax,%eax
call   10a0 <bitfield_mix@plt>
xor    %eax,%eax
call   1160 <bitfield_union@plt>
xor    %eax,%eax
call   1270 <bitfield_unnamed@plt>
xor    %eax,%eax
call   1220 <bitfield_initializer@plt>
xor    %eax,%eax
call   1030 <test_offsetof@plt>
xor    %eax,%eax
call   1080 <test_bitfield_static_initializer@plt>
xor    %eax,%eax
call   1230 <test_bitfield_mix@plt>
xor    %eax,%eax
call   1090 <test_unnamed_bitfield@plt>
xor    %eax,%eax
call   1040 <empty_struct@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 (...) @test1()
%3 = call i32 (...) @test2()
%4 = call i32 (...) @test3()
%5 = call i32 (...) @test4()
%6 = call i32 (...) @test5()
%7 = call i32 (...) @test6()
%8 = call i32 (...) @test7()
%9 = call i32 (...) @test8()
%10 = call i32 (...) @test9()
%11 = call i32 (...) @t1()
%12 = call i32 (...) @t2()
%13 = call i32 (...) @t3()
%14 = call i32 (...) @t4()
%15 = call i32 (...) @t5()
%16 = call i32 (...) @t6()
%17 = call i32 (...) @t7()
%18 = call i32 (...) @t8()
%19 = call i32 (...) @t9()
%20 = call i32 (...) @t10()
%21 = call i32 (...) @t11()
%22 = call i32 (...) @t12()
%23 = call i32 (...) @t13()
%24 = call i32 (...) @t14()
%25 = call i32 (...) @unnamed()
%26 = call i32 (...) @assign()
%27 = call i32 (...) @arrow()
%28 = call i32 (...) @incomplete()
%29 = call i32 (...) @bitfield_basic()
%30 = call i32 (...) @bitfield_mix()
%31 = call i32 (...) @bitfield_union()
%32 = call i32 (...) @bitfield_unnamed()
%33 = call i32 (...) @bitfield_initializer()
%34 = call i32 (...) @test_offsetof()
%35 = call i32 (...) @test_bitfield_static_initializer()
%36 = call i32 (...) @test_bitfield_mix()
%37 = call i32 (...) @test_unnamed_bitfield()
%38 = call i32 (...) @empty_struct()
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 (...) @test1()
%2 = tail call i32 (...) @test2()
%3 = tail call i32 (...) @test3()
%4 = tail call i32 (...) @test4()
%5 = tail call i32 (...) @test5()
%6 = tail call i32 (...) @test6()
%7 = tail call i32 (...) @test7()
%8 = tail call i32 (...) @test8()
%9 = tail call i32 (...) @test9()
%10 = tail call i32 (...) @t1()
%11 = tail call i32 (...) @t2()
%12 = tail call i32 (...) @t3()
%13 = tail call i32 (...) @t4()
%14 = tail call i32 (...) @t5()
%15 = tail call i32 (...) @t6()
%16 = tail call i32 (...) @t7()
%17 = tail call i32 (...) @t8()
%18 = tail call i32 (...) @t9()
%19 = tail call i32 (...) @t10()
%20 = tail call i32 (...) @t11()
%21 = tail call i32 (...) @t12()
%22 = tail call i32 (...) @t13()
%23 = tail call i32 (...) @t14()
%24 = tail call i32 (...) @unnamed()
%25 = tail call i32 (...) @assign()
%26 = tail call i32 (...) @arrow()
%27 = tail call i32 (...) @incomplete()
%28 = tail call i32 (...) @bitfield_basic()
%29 = tail call i32 (...) @bitfield_mix()
%30 = tail call i32 (...) @bitfield_union()
%31 = tail call i32 (...) @bitfield_unnamed()
%32 = tail call i32 (...) @bitfield_initializer()
%33 = tail call i32 (...) @test_offsetof()
%34 = tail call i32 (...) @test_bitfield_static_initializer()
%35 = tail call i32 (...) @test_bitfield_mix()
%36 = tail call i32 (...) @test_unnamed_bitfield()
%37 = tail call i32 (...) @empty_struct()
ret i32 0
}