void fn3(int i, int j) {
  static int a[16];
  static int b[8][8];
  if (a[5] == a[5])
    ;
  if (a[5] != a[5])
    ;
  if (a[5] != a[5])
    ;
  if (a[i] == a[i])
    ;
  if (b[5][5] == b[5][5])
    ;
  if (b[5][5] >= b[5][5])
    ;
  if (b[5][5] == b[5][5])
    ;
  if (b[i][j] != b[i][j])
    ;
  if (b[i][5] < b[i][5])
    ;
  if (b[5][j] < b[5][j])
    ;
  if ((a[i] + 4) == (4 + a[i]))
    ;
}


x86 assembly (clang, -O0):
<fn3>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    0x2f34(%rip),%eax
cmp    0x2f2e(%rip),%eax
jne    1121 <fn3+0x21>
jmp    1121 <fn3+0x21>
mov    0x2f1d(%rip),%eax
cmp    0x2f17(%rip),%eax
je     1138 <fn3+0x38>
jmp    1138 <fn3+0x38>
mov    0x2f06(%rip),%eax
cmp    0x2f00(%rip),%eax
je     114f <fn3+0x4f>
jmp    114f <fn3+0x4f>
movslq -0x4(%rbp),%rcx
lea    0x2ed6(%rip),%rax
mov    (%rax,%rcx,4),%eax
movslq -0x4(%rbp),%rdx
lea    0x2ec8(%rip),%rcx
cmp    (%rcx,%rdx,4),%eax
jne    1176 <fn3+0x76>
jmp    1176 <fn3+0x76>
mov    0x2fa8(%rip),%eax
cmp    0x2fa2(%rip),%eax
jne    118d <fn3+0x8d>
jmp    118d <fn3+0x8d>
mov    0x2f91(%rip),%eax
cmp    0x2f8b(%rip),%eax
jl     11a4 <fn3+0xa4>
jmp    11a4 <fn3+0xa4>
mov    0x2f7a(%rip),%eax
cmp    0x2f74(%rip),%eax
jne    11bb <fn3+0xbb>
jmp    11bb <fn3+0xbb>
movslq -0x4(%rbp),%rcx
lea    0x2eaa(%rip),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
movslq -0x4(%rbp),%rdx
lea    0x2e91(%rip),%rcx
shl    $0x5,%rdx
add    %rdx,%rcx
movslq -0x8(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
je     11f8 <fn3+0xf8>
jmp    11f8 <fn3+0xf8>
movslq -0x4(%rbp),%rcx
lea    0x2e6d(%rip),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x14(%rax),%eax
movslq -0x4(%rbp),%rdx
lea    0x2e58(%rip),%rcx
shl    $0x5,%rdx
add    %rdx,%rcx
cmp    0x14(%rcx),%eax
jge    122d <fn3+0x12d>
jmp    122d <fn3+0x12d>
movslq -0x8(%rbp),%rcx
lea    0x2e38(%rip),%rax
mov    0xa0(%rax,%rcx,4),%eax
movslq -0x8(%rbp),%rdx
lea    0x2e26(%rip),%rcx
cmp    0xa0(%rcx,%rdx,4),%eax
jge    125c <fn3+0x15c>
jmp    125c <fn3+0x15c>
movslq -0x4(%rbp),%rcx
lea    0x2dc9(%rip),%rax
mov    (%rax,%rcx,4),%eax
add    $0x4,%eax
movslq -0x4(%rbp),%rdx
lea    0x2db8(%rip),%rcx
mov    (%rcx,%rdx,4),%ecx
add    $0x4,%ecx
cmp    %ecx,%eax
jne    128b <fn3+0x18b>
jmp    128b <fn3+0x18b>
pop    %rbp
ret

x86 assembly (clang, -O2):
<fn3>:
ret

LLVM IR (-O0):
@fn3.a = internal global [16 x i32] zeroinitializer
@fn3.b = internal global [8 x [8 x i32]] zeroinitializer
define void @fn3(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
store i32 %0, i32* %3
store i32 %1, i32* %4
%5 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%6 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%7 = icmp eq i32 %5, %6
br i1 %7, label %8, label %9
8: ; preds = %2
br label %9
9: ; preds = %8, %2
%10 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%11 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%12 = icmp ne i32 %10, %11
br i1 %12, label %13, label %14
13: ; preds = %9
br label %14
14: ; preds = %13, %9
%15 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%16 = load i32, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @fn3.a, i64 0, i64 5)
%17 = icmp ne i32 %15, %16
br i1 %17, label %18, label %19
18: ; preds = %14
br label %19
19: ; preds = %18, %14
%20 = load i32, i32* %3
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds [16 x i32], [16 x i32]* @fn3.a, i64 0, i64 %21
%23 = load i32, i32* %22
%24 = load i32, i32* %3
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [16 x i32], [16 x i32]* @fn3.a, i64 0, i64 %25
%27 = load i32, i32* %26
%28 = icmp eq i32 %23, %27
br i1 %28, label %29, label %30
29: ; preds = %19
br label %30
30: ; preds = %29, %19
%31 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%32 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%33 = icmp eq i32 %31, %32
br i1 %33, label %34, label %35
34: ; preds = %30
br label %35
35: ; preds = %34, %30
%36 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%37 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%38 = icmp sge i32 %36, %37
br i1 %38, label %39, label %40
39: ; preds = %35
br label %40
40: ; preds = %39, %35
%41 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%42 = load i32, i32* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5, i64 5)
%43 = icmp eq i32 %41, %42
br i1 %43, label %44, label %45
44: ; preds = %40
br label %45
45: ; preds = %44, %40
%46 = load i32, i32* %3
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 %47
%49 = load i32, i32* %4
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [8 x i32], [8 x i32]* %48, i64 0, i64 %50
%52 = load i32, i32* %51
%53 = load i32, i32* %3
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 %54
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [8 x i32], [8 x i32]* %55, i64 0, i64 %57
%59 = load i32, i32* %58
%60 = icmp ne i32 %52, %59
br i1 %60, label %61, label %62
61: ; preds = %45
br label %62
62: ; preds = %61, %45
%63 = load i32, i32* %3
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 %64
%66 = getelementptr inbounds [8 x i32], [8 x i32]* %65, i64 0, i64 5
%67 = load i32, i32* %66
%68 = load i32, i32* %3
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 %69
%71 = getelementptr inbounds [8 x i32], [8 x i32]* %70, i64 0, i64 5
%72 = load i32, i32* %71
%73 = icmp slt i32 %67, %72
br i1 %73, label %74, label %75
74: ; preds = %62
br label %75
75: ; preds = %74, %62
%76 = load i32, i32* %4
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [8 x i32], [8 x i32]* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5), i64 0, i64 %77
%79 = load i32, i32* %78
%80 = load i32, i32* %4
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds [8 x i32], [8 x i32]* getelementptr inbounds ([8 x [8 x i32]], [8 x [8 x i32]]* @fn3.b, i64 0, i64 5), i64 0, i64 %81
%83 = load i32, i32* %82
%84 = icmp slt i32 %79, %83
br i1 %84, label %85, label %86
85: ; preds = %75
br label %86
86: ; preds = %85, %75
%87 = load i32, i32* %3
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [16 x i32], [16 x i32]* @fn3.a, i64 0, i64 %88
%90 = load i32, i32* %89
%91 = add nsw i32 %90, 4
%92 = load i32, i32* %3
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [16 x i32], [16 x i32]* @fn3.a, i64 0, i64 %93
%95 = load i32, i32* %94
%96 = add nsw i32 4, %95
%97 = icmp eq i32 %91, %96
br i1 %97, label %98, label %99
98: ; preds = %86
br label %99
99: ; preds = %98, %86
ret void
}

LLVM IR (-O2):
define void @fn3(i32 %0, i32 %1) {
ret void
}