void func1(int var1, int var2) {
  var1 = var2 | var1;
  var1 = var2 | var1;
  var1 = var2 | var1;
  var1 = var2 & var1;
  var1 = var2 & var1;
  var1 = var2 & var1;
  var1 = var2 ^ var1;
  var1 = var2 ^ var1;
  var1 = var2 ^ var1;
  var1 = var2 <= var1;
  var1 = var2 <= var1;
  var1 = var2 <= var1;
  var1 = var2 >= var1;
  var1 = var2 >= var1;
  var1 = var2 >= var1;
  var1 = var2 == var1;
  var1 = var2 == var1;
  var1 = var2 == var1;
  var1 = var2 != var1;
  var1 = var2 != var1;
  var1 = var2 != var1;
}


x86 assembly (clang, -O0):
<func1>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
or     -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
or     -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
or     -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
and    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
and    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
and    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
xor    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
xor    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
xor    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setle  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
pop    %rbp
ret

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

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

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