int main() {
  int a = 10;
  if (*(&a) != 10)
    return 1;
  long b = 20;
  if (*(&b) + 50 != 70)
    return 2;
  int *c = &a;
  int *d;
  c = &a;
  c = d;
  c = &a;
  if (&(*c) != &a)
    return 5;
  void *v = &a;
  *v;
  int *q = &a;
  v = &q;
  int *e = v;
  v = 0;
  e = 0;
  _Bool h = &a;
  int *i_on_stack;
  int j;
  &i_on_stack;
  i_on_stack = &j;
  if (i_on_stack != &j)
    return 3;
  j = 10;
  i_on_stack = &j;
  j = *i_on_stack;
  if (j != 10)
    return 4;
  if (h)
    return 0;
  return 1;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
movl   $0xa,-0x8(%rbp)
cmpl   $0xa,-0x8(%rbp)
je     1128 <main+0x28>
movl   $0x1,-0x4(%rbp)
jmp    1235 <main+0x135>
movq   $0x14,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0x32,%rax
cmp    $0x46,%rax
je     114e <main+0x4e>
movl   $0x2,-0x4(%rbp)
jmp    1235 <main+0x135>
lea    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
lea    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x18(%rbp)
lea    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
lea    -0x8(%rbp),%rax
cmp    %rax,-0x18(%rbp)
je     1188 <main+0x88>
movl   $0x5,-0x4(%rbp)
jmp    1235 <main+0x135>
lea    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
lea    -0x30(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x38(%rbp)
movq   $0x0,-0x28(%rbp)
movq   $0x0,-0x38(%rbp)
lea    -0x8(%rbp),%rax
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
mov    %al,-0x39(%rbp)
lea    -0x4c(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x4c(%rbp),%rax
cmp    %rax,-0x48(%rbp)
je     11ea <main+0xea>
movl   $0x3,-0x4(%rbp)
jmp    1235 <main+0x135>
movl   $0xa,-0x4c(%rbp)
lea    -0x4c(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0xa,-0x4c(%rbp)
je     1218 <main+0x118>
movl   $0x4,-0x4(%rbp)
jmp    1235 <main+0x135>
testb  $0x1,-0x39(%rbp)
je     122e <main+0x12e>
movl   $0x0,-0x4(%rbp)
jmp    1235 <main+0x135>
movl   $0x1,-0x4(%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
%3 = alloca i64
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i8*
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i8
%10 = alloca i32*
%11 = alloca i32
store i32 0, i32* %1
store i32 10, i32* %2
%12 = load i32, i32* %2
%13 = icmp ne i32 %12, 10
br i1 %13, label %14, label %15
14: ; preds = %0
store i32 1, i32* %1
br label %47
15: ; preds = %0
store i64 20, i64* %3
%16 = load i64, i64* %3
%17 = add nsw i64 %16, 50
%18 = icmp ne i64 %17, 70
br i1 %18, label %19, label %20
19: ; preds = %15
store i32 2, i32* %1
br label %47
20: ; preds = %15
store i32* %2, i32** %4
store i32* %2, i32** %4
%21 = load i32*, i32** %5
store i32* %21, i32** %4
store i32* %2, i32** %4
%22 = load i32*, i32** %4
%23 = icmp ne i32* %22, %2
br i1 %23, label %24, label %25
24: ; preds = %20
store i32 5, i32* %1
br label %47
25: ; preds = %20
%26 = bitcast i32* %2 to i8*
store i8* %26, i8** %6
%27 = load i8*, i8** %6
store i32* %2, i32** %7
%28 = bitcast i32** %7 to i8*
store i8* %28, i8** %6
%29 = load i8*, i8** %6
%30 = bitcast i8* %29 to i32*
store i32* %30, i32** %8
store i8* null, i8** %6
store i32* null, i32** %8
%31 = icmp ne i32* %2, null
%32 = zext i1 %31 to i8
store i8 %32, i8* %9
store i32* %11, i32** %10
%33 = load i32*, i32** %10
%34 = icmp ne i32* %33, %11
br i1 %34, label %35, label %36
35: ; preds = %25
store i32 3, i32* %1
br label %47
36: ; preds = %25
store i32 10, i32* %11
store i32* %11, i32** %10
%37 = load i32*, i32** %10
%38 = load i32, i32* %37
store i32 %38, i32* %11
%39 = load i32, i32* %11
%40 = icmp ne i32 %39, 10
br i1 %40, label %41, label %42
41: ; preds = %36
store i32 4, i32* %1
br label %47
42: ; preds = %36
%43 = load i8, i8* %9
%44 = trunc i8 %43 to i1
br i1 %44, label %45, label %46
45: ; preds = %42
store i32 0, i32* %1
br label %47
46: ; preds = %42
store i32 1, i32* %1
br label %47
47: ; preds = %46, %45, %41, %35, %24, %19, %14
%48 = load i32, i32* %1
ret i32 %48
}

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