int main(void) {
  int i;
  i = i || 0;
  i = i || 4;
  i = 4 || i;
  i = 0 || i;
  i = i && 0;
  i = i && 4;
  i = 4 && i;
  i = 0 && i;
  i = i << 0;
  i = 0 << i;
  i = i >> 0;
  i = 0 >> i;
  i = i + 0;
  i = 0 + i;
  i = i - 0;
  i = 0 - i;
  i = i | 0;
  i = 0 | i;
  i = i ^ 0;
  i = 0 ^ i;
  i = i * 0;
  i = 0 * i;
  i = i * 1;
  i = 1 * i;
  i = i / 1;
  i = 1 / i;
  i = i & ~0;
  i = ~0 & i;
  i = i % 1;
  i = i / 0;
  i = i % 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
mov    $0x1,%al
cmpl   $0x0,-0x8(%rbp)
mov    %al,-0x9(%rbp)
jne    1124 <main+0x24>
xor    %eax,%eax
mov    %al,-0x9(%rbp)
jmp    1124 <main+0x24>
mov    -0x9(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
mov    $0x1,%al
cmpl   $0x0,-0x8(%rbp)
mov    %al,-0xa(%rbp)
jne    1148 <main+0x48>
mov    $0x1,%al
mov    %al,-0xa(%rbp)
jmp    1148 <main+0x48>
mov    -0xa(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
movl   $0x1,-0x8(%rbp)
cmpl   $0x0,-0x8(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x8(%rbp)
mov    %al,-0xb(%rbp)
je     1182 <main+0x82>
xor    %eax,%eax
mov    %al,-0xb(%rbp)
jmp    1182 <main+0x82>
mov    -0xb(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x8(%rbp)
mov    %al,-0xc(%rbp)
je     11a6 <main+0xa6>
mov    $0x1,%al
mov    %al,-0xc(%rbp)
jmp    11a6 <main+0xa6>
mov    -0xc(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
cmpl   $0x0,-0x8(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x8(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%ecx
xor    %eax,%eax
shl    %cl,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
sar    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%ecx
xor    %eax,%eax
sar    %cl,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x0,%eax
mov    %eax,-0x8(%rbp)
xor    %eax,%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
or     $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
or     $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
xor    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
xor    $0x0,%eax
mov    %eax,-0x8(%rbp)
imul   $0x0,-0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
imul   $0x0,-0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x1,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    $0x1,%eax
cltd
idivl  -0x8(%rbp)
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
and    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
and    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x1,%ecx
cltd
idiv   %ecx
mov    %edx,-0x8(%rbp)
mov    -0x8(%rbp),%eax
xor    %ecx,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
xor    %ecx,%ecx
cltd
idiv   %ecx
mov    %edx,-0x8(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

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

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
store i32 0, i32* %1
%3 = load i32, i32* %2
%4 = icmp ne i32 %3, 0
br i1 %4, label %6, label %5
5: ; preds = %0
br label %6
6: ; preds = %5, %0
%7 = phi i1 [ true, %0 ], [ false, %5 ]
%8 = zext i1 %7 to i32
store i32 %8, i32* %2
%9 = load i32, i32* %2
%10 = icmp ne i32 %9, 0
br i1 %10, label %12, label %11
11: ; preds = %6
br label %12
12: ; preds = %11, %6
%13 = phi i1 [ true, %6 ], [ true, %11 ]
%14 = zext i1 %13 to i32
store i32 %14, i32* %2
store i32 1, i32* %2
%15 = load i32, i32* %2
%16 = icmp ne i32 %15, 0
%17 = zext i1 %16 to i32
store i32 %17, i32* %2
%18 = load i32, i32* %2
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %21
20: ; preds = %12
br label %21
21: ; preds = %20, %12
%22 = phi i1 [ false, %12 ], [ false, %20 ]
%23 = zext i1 %22 to i32
store i32 %23, i32* %2
%24 = load i32, i32* %2
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %27
26: ; preds = %21
br label %27
27: ; preds = %26, %21
%28 = phi i1 [ false, %21 ], [ true, %26 ]
%29 = zext i1 %28 to i32
store i32 %29, i32* %2
%30 = load i32, i32* %2
%31 = icmp ne i32 %30, 0
%32 = zext i1 %31 to i32
store i32 %32, i32* %2
store i32 0, i32* %2
%33 = load i32, i32* %2
%34 = shl i32 %33, 0
store i32 %34, i32* %2
%35 = load i32, i32* %2
%36 = shl i32 0, %35
store i32 %36, i32* %2
%37 = load i32, i32* %2
%38 = ashr i32 %37, 0
store i32 %38, i32* %2
%39 = load i32, i32* %2
%40 = ashr i32 0, %39
store i32 %40, i32* %2
%41 = load i32, i32* %2
%42 = add nsw i32 %41, 0
store i32 %42, i32* %2
%43 = load i32, i32* %2
%44 = add nsw i32 0, %43
store i32 %44, i32* %2
%45 = load i32, i32* %2
%46 = sub nsw i32 %45, 0
store i32 %46, i32* %2
%47 = load i32, i32* %2
%48 = sub nsw i32 0, %47
store i32 %48, i32* %2
%49 = load i32, i32* %2
%50 = or i32 %49, 0
store i32 %50, i32* %2
%51 = load i32, i32* %2
%52 = or i32 0, %51
store i32 %52, i32* %2
%53 = load i32, i32* %2
%54 = xor i32 %53, 0
store i32 %54, i32* %2
%55 = load i32, i32* %2
%56 = xor i32 0, %55
store i32 %56, i32* %2
%57 = load i32, i32* %2
%58 = mul nsw i32 %57, 0
store i32 %58, i32* %2
%59 = load i32, i32* %2
%60 = mul nsw i32 0, %59
store i32 %60, i32* %2
%61 = load i32, i32* %2
%62 = mul nsw i32 %61, 1
store i32 %62, i32* %2
%63 = load i32, i32* %2
%64 = mul nsw i32 1, %63
store i32 %64, i32* %2
%65 = load i32, i32* %2
%66 = sdiv i32 %65, 1
store i32 %66, i32* %2
%67 = load i32, i32* %2
%68 = sdiv i32 1, %67
store i32 %68, i32* %2
%69 = load i32, i32* %2
%70 = and i32 %69, -1
store i32 %70, i32* %2
%71 = load i32, i32* %2
%72 = and i32 -1, %71
store i32 %72, i32* %2
%73 = load i32, i32* %2
%74 = srem i32 %73, 1
store i32 %74, i32* %2
%75 = load i32, i32* %2
%76 = sdiv i32 %75, 0
store i32 %76, i32* %2
%77 = load i32, i32* %2
%78 = srem i32 %77, 0
store i32 %78, i32* %2
%79 = load i32, i32* %1
ret i32 %79
}

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