void symbolic_region(int *p) {
  int a;
  if (&a == p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
  if (&a != p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
  if (&a > p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
  if (&a < p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
  if (&a >= p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
  if (&a <= p)
    do {
      int a, b;
      int c = &b - &a;
    } while (0);
}


x86 assembly (clang, -O0):
<symbolic_region>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
jne    1132 <symbolic_region+0x32>
jmp    111b <symbolic_region+0x1b>
lea    -0x14(%rbp),%rax
lea    -0x10(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x18(%rbp)
jmp    1132 <symbolic_region+0x32>
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
je     115c <symbolic_region+0x5c>
jmp    1145 <symbolic_region+0x45>
lea    -0x20(%rbp),%rax
lea    -0x1c(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x24(%rbp)
jmp    115c <symbolic_region+0x5c>
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
jbe    1186 <symbolic_region+0x86>
jmp    116f <symbolic_region+0x6f>
lea    -0x2c(%rbp),%rax
lea    -0x28(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x30(%rbp)
jmp    1186 <symbolic_region+0x86>
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    11b0 <symbolic_region+0xb0>
jmp    1199 <symbolic_region+0x99>
lea    -0x38(%rbp),%rax
lea    -0x34(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x3c(%rbp)
jmp    11b0 <symbolic_region+0xb0>
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
jb     11da <symbolic_region+0xda>
jmp    11c3 <symbolic_region+0xc3>
lea    -0x44(%rbp),%rax
lea    -0x40(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x48(%rbp)
jmp    11da <symbolic_region+0xda>
lea    -0xc(%rbp),%rax
cmp    -0x8(%rbp),%rax
ja     1204 <symbolic_region+0x104>
jmp    11ed <symbolic_region+0xed>
lea    -0x50(%rbp),%rax
lea    -0x4c(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,-0x54(%rbp)
jmp    1204 <symbolic_region+0x104>
pop    %rbp
ret

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

LLVM IR (-O0):
define void @symbolic_region(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
store i32* %0, i32** %2
%22 = load i32*, i32** %2
%23 = icmp eq i32* %3, %22
br i1 %23, label %24, label %32
24: ; preds = %1
br label %25
25: ; preds = %24
%26 = ptrtoint i32* %5 to i64
%27 = ptrtoint i32* %4 to i64
%28 = sub i64 %26, %27
%29 = sdiv exact i64 %28, 4
%30 = trunc i64 %29 to i32
store i32 %30, i32* %6
br label %31
31: ; preds = %25
br label %32
32: ; preds = %31, %1
%33 = load i32*, i32** %2
%34 = icmp ne i32* %3, %33
br i1 %34, label %35, label %43
35: ; preds = %32
br label %36
36: ; preds = %35
%37 = ptrtoint i32* %8 to i64
%38 = ptrtoint i32* %7 to i64
%39 = sub i64 %37, %38
%40 = sdiv exact i64 %39, 4
%41 = trunc i64 %40 to i32
store i32 %41, i32* %9
br label %42
42: ; preds = %36
br label %43
43: ; preds = %42, %32
%44 = load i32*, i32** %2
%45 = icmp ugt i32* %3, %44
br i1 %45, label %46, label %54
46: ; preds = %43
br label %47
47: ; preds = %46
%48 = ptrtoint i32* %11 to i64
%49 = ptrtoint i32* %10 to i64
%50 = sub i64 %48, %49
%51 = sdiv exact i64 %50, 4
%52 = trunc i64 %51 to i32
store i32 %52, i32* %12
br label %53
53: ; preds = %47
br label %54
54: ; preds = %53, %43
%55 = load i32*, i32** %2
%56 = icmp ult i32* %3, %55
br i1 %56, label %57, label %65
57: ; preds = %54
br label %58
58: ; preds = %57
%59 = ptrtoint i32* %14 to i64
%60 = ptrtoint i32* %13 to i64
%61 = sub i64 %59, %60
%62 = sdiv exact i64 %61, 4
%63 = trunc i64 %62 to i32
store i32 %63, i32* %15
br label %64
64: ; preds = %58
br label %65
65: ; preds = %64, %54
%66 = load i32*, i32** %2
%67 = icmp uge i32* %3, %66
br i1 %67, label %68, label %76
68: ; preds = %65
br label %69
69: ; preds = %68
%70 = ptrtoint i32* %17 to i64
%71 = ptrtoint i32* %16 to i64
%72 = sub i64 %70, %71
%73 = sdiv exact i64 %72, 4
%74 = trunc i64 %73 to i32
store i32 %74, i32* %18
br label %75
75: ; preds = %69
br label %76
76: ; preds = %75, %65
%77 = load i32*, i32** %2
%78 = icmp ule i32* %3, %77
br i1 %78, label %79, label %87
79: ; preds = %76
br label %80
80: ; preds = %79
%81 = ptrtoint i32* %20 to i64
%82 = ptrtoint i32* %19 to i64
%83 = sub i64 %81, %82
%84 = sdiv exact i64 %83, 4
%85 = trunc i64 %84 to i32
store i32 %85, i32* %21
br label %86
86: ; preds = %80
br label %87
87: ; preds = %86, %76
ret void
}

LLVM IR (-O2):
define void @symbolic_region(i32* nocapture %0) {
ret void
}