int main() {
  signed char a;
  unsigned char b;
  signed short int c;
  unsigned short int d;
  signed int e;
  unsigned int f;
  signed long long int g;
  unsigned long long int h;
  unsigned char ok, failed;
  ok = 0;
  failed = 0;
  a = 0;
  b = 1;
  c = 2;
  d = 3;
  e = 4;
  f = 5;
  g = 6;
  h = 7;
  if (a == 0)
    if (b == 1)
      if (c == 2)
        if (d == 3)
          if (e == 4)
            if (f == 5)
              if (g == 6)
                if (h == 7)
                  ok++;
  if (a >= 0)
    if (b <= 1)
      if (c >= 2)
        if (d <= 3)
          if (e >= 4)
            if (f >= 5)
              if (g <= 6)
                if (h <= 7)
                  ok++;
  if (a >= -1)
    if (b >= 1)
      if (c >= -2)
        if (d >= 3)
          if (e >= -3)
            if (f >= 5)
              if (g >= -4)
                if (h >= 7)
                  ok++;
  if (a == 0)
    if (b == 1)
      if (c == 2)
        if (d == 3)
          if (e < 4)
            if (f == 5)
              if (g == 6)
                if (h == 7)
                  failed++;
  if (a >= 0)
    if (b <= 1)
      if (c >= 2)
        if (d <= 3)
          if (e >= 4)
            if (f >= 5)
              if (g <= 6)
                if (h == 8)
                  failed++;
  if (a == -1)
    if (b >= 1)
      if (c >= -2)
        if (d >= 3)
          if (e >= -3)
            if (f >= 5)
              if (g >= -4)
                if (h >= 7)
                  failed++;
  ok = 0;
  failed = 0;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
movb   $0x0,-0x29(%rbp)
movb   $0x0,-0x2a(%rbp)
movb   $0x0,-0x5(%rbp)
movb   $0x1,-0x6(%rbp)
movw   $0x2,-0x8(%rbp)
movw   $0x3,-0xa(%rbp)
movl   $0x4,-0x10(%rbp)
movl   $0x5,-0x14(%rbp)
movq   $0x6,-0x20(%rbp)
movq   $0x7,-0x28(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jne    11ce <main+0xce>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jne    11c9 <main+0xc9>
movswl -0x8(%rbp),%eax
cmp    $0x2,%eax
jne    11c4 <main+0xc4>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jne    11bf <main+0xbf>
cmpl   $0x4,-0x10(%rbp)
jne    11ba <main+0xba>
cmpl   $0x5,-0x14(%rbp)
jne    11b5 <main+0xb5>
cmpq   $0x6,-0x20(%rbp)
jne    11b0 <main+0xb0>
cmpq   $0x7,-0x28(%rbp)
jne    11ab <main+0xab>
mov    -0x29(%rbp),%al
add    $0x1,%al
mov    %al,-0x29(%rbp)
jmp    11b0 <main+0xb0>
jmp    11b5 <main+0xb5>
jmp    11ba <main+0xba>
jmp    11bf <main+0xbf>
jmp    11c4 <main+0xc4>
jmp    11c9 <main+0xc9>
jmp    11ce <main+0xce>
movsbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jl     1257 <main+0x157>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jg     1252 <main+0x152>
movswl -0x8(%rbp),%eax
cmp    $0x2,%eax
jl     124d <main+0x14d>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jg     1248 <main+0x148>
cmpl   $0x4,-0x10(%rbp)
jl     1243 <main+0x143>
cmpl   $0x5,-0x14(%rbp)
jb     123e <main+0x13e>
cmpq   $0x6,-0x20(%rbp)
jg     1239 <main+0x139>
cmpq   $0x7,-0x28(%rbp)
ja     1234 <main+0x134>
mov    -0x29(%rbp),%al
add    $0x1,%al
mov    %al,-0x29(%rbp)
jmp    1239 <main+0x139>
jmp    123e <main+0x13e>
jmp    1243 <main+0x143>
jmp    1248 <main+0x148>
jmp    124d <main+0x14d>
jmp    1252 <main+0x152>
jmp    1257 <main+0x157>
movsbl -0x5(%rbp),%eax
cmp    $0xffffffff,%eax
jl     12e0 <main+0x1e0>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jl     12db <main+0x1db>
movswl -0x8(%rbp),%eax
cmp    $0xfffffffe,%eax
jl     12d6 <main+0x1d6>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jl     12d1 <main+0x1d1>
cmpl   $0xfffffffd,-0x10(%rbp)
jl     12cc <main+0x1cc>
cmpl   $0x5,-0x14(%rbp)
jb     12c7 <main+0x1c7>
cmpq   $0xfffffffffffffffc,-0x20(%rbp)
jl     12c2 <main+0x1c2>
cmpq   $0x7,-0x28(%rbp)
jb     12bd <main+0x1bd>
mov    -0x29(%rbp),%al
add    $0x1,%al
mov    %al,-0x29(%rbp)
jmp    12c2 <main+0x1c2>
jmp    12c7 <main+0x1c7>
jmp    12cc <main+0x1cc>
jmp    12d1 <main+0x1d1>
jmp    12d6 <main+0x1d6>
jmp    12db <main+0x1db>
jmp    12e0 <main+0x1e0>
movsbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jne    1369 <main+0x269>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jne    1364 <main+0x264>
movswl -0x8(%rbp),%eax
cmp    $0x2,%eax
jne    135f <main+0x25f>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jne    135a <main+0x25a>
cmpl   $0x4,-0x10(%rbp)
jge    1355 <main+0x255>
cmpl   $0x5,-0x14(%rbp)
jne    1350 <main+0x250>
cmpq   $0x6,-0x20(%rbp)
jne    134b <main+0x24b>
cmpq   $0x7,-0x28(%rbp)
jne    1346 <main+0x246>
mov    -0x2a(%rbp),%al
add    $0x1,%al
mov    %al,-0x2a(%rbp)
jmp    134b <main+0x24b>
jmp    1350 <main+0x250>
jmp    1355 <main+0x255>
jmp    135a <main+0x25a>
jmp    135f <main+0x25f>
jmp    1364 <main+0x264>
jmp    1369 <main+0x269>
movsbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jl     13f2 <main+0x2f2>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jg     13ed <main+0x2ed>
movswl -0x8(%rbp),%eax
cmp    $0x2,%eax
jl     13e8 <main+0x2e8>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jg     13e3 <main+0x2e3>
cmpl   $0x4,-0x10(%rbp)
jl     13de <main+0x2de>
cmpl   $0x5,-0x14(%rbp)
jb     13d9 <main+0x2d9>
cmpq   $0x6,-0x20(%rbp)
jg     13d4 <main+0x2d4>
cmpq   $0x8,-0x28(%rbp)
jne    13cf <main+0x2cf>
mov    -0x2a(%rbp),%al
add    $0x1,%al
mov    %al,-0x2a(%rbp)
jmp    13d4 <main+0x2d4>
jmp    13d9 <main+0x2d9>
jmp    13de <main+0x2de>
jmp    13e3 <main+0x2e3>
jmp    13e8 <main+0x2e8>
jmp    13ed <main+0x2ed>
jmp    13f2 <main+0x2f2>
movsbl -0x5(%rbp),%eax
cmp    $0xffffffff,%eax
jne    147b <main+0x37b>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jl     1476 <main+0x376>
movswl -0x8(%rbp),%eax
cmp    $0xfffffffe,%eax
jl     1471 <main+0x371>
movzwl -0xa(%rbp),%eax
cmp    $0x3,%eax
jl     146c <main+0x36c>
cmpl   $0xfffffffd,-0x10(%rbp)
jl     1467 <main+0x367>
cmpl   $0x5,-0x14(%rbp)
jb     1462 <main+0x362>
cmpq   $0xfffffffffffffffc,-0x20(%rbp)
jl     145d <main+0x35d>
cmpq   $0x7,-0x28(%rbp)
jb     1458 <main+0x358>
mov    -0x2a(%rbp),%al
add    $0x1,%al
mov    %al,-0x2a(%rbp)
jmp    145d <main+0x35d>
jmp    1462 <main+0x362>
jmp    1467 <main+0x367>
jmp    146c <main+0x36c>
jmp    1471 <main+0x371>
jmp    1476 <main+0x376>
jmp    147b <main+0x37b>
movb   $0x0,-0x29(%rbp)
movb   $0x0,-0x2a(%rbp)
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
xor    %eax,%eax
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i8
%3 = alloca i8
%4 = alloca i16
%5 = alloca i16
%6 = alloca i32
%7 = alloca i32
%8 = alloca i64
%9 = alloca i64
%10 = alloca i8
%11 = alloca i8
store i32 0, i32* %1
store i8 0, i8* %10
store i8 0, i8* %11
store i8 0, i8* %2
store i8 1, i8* %3
store i16 2, i16* %4
store i16 3, i16* %5
store i32 4, i32* %6
store i32 5, i32* %7
store i64 6, i64* %8
store i64 7, i64* %9
%12 = load i8, i8* %2
%13 = sext i8 %12 to i32
%14 = icmp eq i32 %13, 0
br i1 %14, label %15, label %49
15: ; preds = %0
%16 = load i8, i8* %3
%17 = zext i8 %16 to i32
%18 = icmp eq i32 %17, 1
br i1 %18, label %19, label %48
19: ; preds = %15
%20 = load i16, i16* %4
%21 = sext i16 %20 to i32
%22 = icmp eq i32 %21, 2
br i1 %22, label %23, label %47
23: ; preds = %19
%24 = load i16, i16* %5
%25 = zext i16 %24 to i32
%26 = icmp eq i32 %25, 3
br i1 %26, label %27, label %46
27: ; preds = %23
%28 = load i32, i32* %6
%29 = icmp eq i32 %28, 4
br i1 %29, label %30, label %45
30: ; preds = %27
%31 = load i32, i32* %7
%32 = icmp eq i32 %31, 5
br i1 %32, label %33, label %44
33: ; preds = %30
%34 = load i64, i64* %8
%35 = icmp eq i64 %34, 6
br i1 %35, label %36, label %43
36: ; preds = %33
%37 = load i64, i64* %9
%38 = icmp eq i64 %37, 7
br i1 %38, label %39, label %42
39: ; preds = %36
%40 = load i8, i8* %10
%41 = add i8 %40, 1
store i8 %41, i8* %10
br label %42
42: ; preds = %39, %36
br label %43
43: ; preds = %42, %33
br label %44
44: ; preds = %43, %30
br label %45
45: ; preds = %44, %27
br label %46
46: ; preds = %45, %23
br label %47
47: ; preds = %46, %19
br label %48
48: ; preds = %47, %15
br label %49
49: ; preds = %48, %0
%50 = load i8, i8* %2
%51 = sext i8 %50 to i32
%52 = icmp sge i32 %51, 0
br i1 %52, label %53, label %87
53: ; preds = %49
%54 = load i8, i8* %3
%55 = zext i8 %54 to i32
%56 = icmp sle i32 %55, 1
br i1 %56, label %57, label %86
57: ; preds = %53
%58 = load i16, i16* %4
%59 = sext i16 %58 to i32
%60 = icmp sge i32 %59, 2
br i1 %60, label %61, label %85
61: ; preds = %57
%62 = load i16, i16* %5
%63 = zext i16 %62 to i32
%64 = icmp sle i32 %63, 3
br i1 %64, label %65, label %84
65: ; preds = %61
%66 = load i32, i32* %6
%67 = icmp sge i32 %66, 4
br i1 %67, label %68, label %83
68: ; preds = %65
%69 = load i32, i32* %7
%70 = icmp uge i32 %69, 5
br i1 %70, label %71, label %82
71: ; preds = %68
%72 = load i64, i64* %8
%73 = icmp sle i64 %72, 6
br i1 %73, label %74, label %81
74: ; preds = %71
%75 = load i64, i64* %9
%76 = icmp ule i64 %75, 7
br i1 %76, label %77, label %80
77: ; preds = %74
%78 = load i8, i8* %10
%79 = add i8 %78, 1
store i8 %79, i8* %10
br label %80
80: ; preds = %77, %74
br label %81
81: ; preds = %80, %71
br label %82
82: ; preds = %81, %68
br label %83
83: ; preds = %82, %65
br label %84
84: ; preds = %83, %61
br label %85
85: ; preds = %84, %57
br label %86
86: ; preds = %85, %53
br label %87
87: ; preds = %86, %49
%88 = load i8, i8* %2
%89 = sext i8 %88 to i32
%90 = icmp sge i32 %89, -1
br i1 %90, label %91, label %125
91: ; preds = %87
%92 = load i8, i8* %3
%93 = zext i8 %92 to i32
%94 = icmp sge i32 %93, 1
br i1 %94, label %95, label %124
95: ; preds = %91
%96 = load i16, i16* %4
%97 = sext i16 %96 to i32
%98 = icmp sge i32 %97, -2
br i1 %98, label %99, label %123
99: ; preds = %95
%100 = load i16, i16* %5
%101 = zext i16 %100 to i32
%102 = icmp sge i32 %101, 3
br i1 %102, label %103, label %122
103: ; preds = %99
%104 = load i32, i32* %6
%105 = icmp sge i32 %104, -3
br i1 %105, label %106, label %121
106: ; preds = %103
%107 = load i32, i32* %7
%108 = icmp uge i32 %107, 5
br i1 %108, label %109, label %120
109: ; preds = %106
%110 = load i64, i64* %8
%111 = icmp sge i64 %110, -4
br i1 %111, label %112, label %119
112: ; preds = %109
%113 = load i64, i64* %9
%114 = icmp uge i64 %113, 7
br i1 %114, label %115, label %118
115: ; preds = %112
%116 = load i8, i8* %10
%117 = add i8 %116, 1
store i8 %117, i8* %10
br label %118
118: ; preds = %115, %112
br label %119
119: ; preds = %118, %109
br label %120
120: ; preds = %119, %106
br label %121
121: ; preds = %120, %103
br label %122
122: ; preds = %121, %99
br label %123
123: ; preds = %122, %95
br label %124
124: ; preds = %123, %91
br label %125
125: ; preds = %124, %87
%126 = load i8, i8* %2
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 0
br i1 %128, label %129, label %163
129: ; preds = %125
%130 = load i8, i8* %3
%131 = zext i8 %130 to i32
%132 = icmp eq i32 %131, 1
br i1 %132, label %133, label %162
133: ; preds = %129
%134 = load i16, i16* %4
%135 = sext i16 %134 to i32
%136 = icmp eq i32 %135, 2
br i1 %136, label %137, label %161
137: ; preds = %133
%138 = load i16, i16* %5
%139 = zext i16 %138 to i32
%140 = icmp eq i32 %139, 3
br i1 %140, label %141, label %160
141: ; preds = %137
%142 = load i32, i32* %6
%143 = icmp slt i32 %142, 4
br i1 %143, label %144, label %159
144: ; preds = %141
%145 = load i32, i32* %7
%146 = icmp eq i32 %145, 5
br i1 %146, label %147, label %158
147: ; preds = %144
%148 = load i64, i64* %8
%149 = icmp eq i64 %148, 6
br i1 %149, label %150, label %157
150: ; preds = %147
%151 = load i64, i64* %9
%152 = icmp eq i64 %151, 7
br i1 %152, label %153, label %156
153: ; preds = %150
%154 = load i8, i8* %11
%155 = add i8 %154, 1
store i8 %155, i8* %11
br label %156
156: ; preds = %153, %150
br label %157
157: ; preds = %156, %147
br label %158
158: ; preds = %157, %144
br label %159
159: ; preds = %158, %141
br label %160
160: ; preds = %159, %137
br label %161
161: ; preds = %160, %133
br label %162
162: ; preds = %161, %129
br label %163
163: ; preds = %162, %125
%164 = load i8, i8* %2
%165 = sext i8 %164 to i32
%166 = icmp sge i32 %165, 0
br i1 %166, label %167, label %201
167: ; preds = %163
%168 = load i8, i8* %3
%169 = zext i8 %168 to i32
%170 = icmp sle i32 %169, 1
br i1 %170, label %171, label %200
171: ; preds = %167
%172 = load i16, i16* %4
%173 = sext i16 %172 to i32
%174 = icmp sge i32 %173, 2
br i1 %174, label %175, label %199
175: ; preds = %171
%176 = load i16, i16* %5
%177 = zext i16 %176 to i32
%178 = icmp sle i32 %177, 3
br i1 %178, label %179, label %198
179: ; preds = %175
%180 = load i32, i32* %6
%181 = icmp sge i32 %180, 4
br i1 %181, label %182, label %197
182: ; preds = %179
%183 = load i32, i32* %7
%184 = icmp uge i32 %183, 5
br i1 %184, label %185, label %196
185: ; preds = %182
%186 = load i64, i64* %8
%187 = icmp sle i64 %186, 6
br i1 %187, label %188, label %195
188: ; preds = %185
%189 = load i64, i64* %9
%190 = icmp eq i64 %189, 8
br i1 %190, label %191, label %194
191: ; preds = %188
%192 = load i8, i8* %11
%193 = add i8 %192, 1
store i8 %193, i8* %11
br label %194
194: ; preds = %191, %188
br label %195
195: ; preds = %194, %185
br label %196
196: ; preds = %195, %182
br label %197
197: ; preds = %196, %179
br label %198
198: ; preds = %197, %175
br label %199
199: ; preds = %198, %171
br label %200
200: ; preds = %199, %167
br label %201
201: ; preds = %200, %163
%202 = load i8, i8* %2
%203 = sext i8 %202 to i32
%204 = icmp eq i32 %203, -1
br i1 %204, label %205, label %239
205: ; preds = %201
%206 = load i8, i8* %3
%207 = zext i8 %206 to i32
%208 = icmp sge i32 %207, 1
br i1 %208, label %209, label %238
209: ; preds = %205
%210 = load i16, i16* %4
%211 = sext i16 %210 to i32
%212 = icmp sge i32 %211, -2
br i1 %212, label %213, label %237
213: ; preds = %209
%214 = load i16, i16* %5
%215 = zext i16 %214 to i32
%216 = icmp sge i32 %215, 3
br i1 %216, label %217, label %236
217: ; preds = %213
%218 = load i32, i32* %6
%219 = icmp sge i32 %218, -3
br i1 %219, label %220, label %235
220: ; preds = %217
%221 = load i32, i32* %7
%222 = icmp uge i32 %221, 5
br i1 %222, label %223, label %234
223: ; preds = %220
%224 = load i64, i64* %8
%225 = icmp sge i64 %224, -4
br i1 %225, label %226, label %233
226: ; preds = %223
%227 = load i64, i64* %9
%228 = icmp uge i64 %227, 7
br i1 %228, label %229, label %232
229: ; preds = %226
%230 = load i8, i8* %11
%231 = add i8 %230, 1
store i8 %231, i8* %11
br label %232
232: ; preds = %229, %226
br label %233
233: ; preds = %232, %223
br label %234
234: ; preds = %233, %220
br label %235
235: ; preds = %234, %217
br label %236
236: ; preds = %235, %213
br label %237
237: ; preds = %236, %209
br label %238
238: ; preds = %237, %205
br label %239
239: ; preds = %238, %201
store i8 0, i8* %10
store i8 0, i8* %11
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
ret i32 0
}