extern int chk_data(void) {
  static char c[10] = "ABCDEFGH";
  return ('A' == c[0] && 'B' == c[1] && 'C' == c[2] && 'D' == c[3] &&
          'E' == c[4] && 'F' == c[5] && 'G' == c[6] && 'H' == c[7]);
}


x86 assembly (clang, -O0):
<chk_data>:
push   %rbp
mov    %rsp,%rbp
movsbl 0x2f15(%rip),%edx
xor    %eax,%eax
mov    $0x41,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2efd(%rip),%edx
xor    %eax,%eax
mov    $0x42,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2ee5(%rip),%edx
xor    %eax,%eax
mov    $0x43,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2ecd(%rip),%edx
xor    %eax,%eax
mov    $0x44,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2eb5(%rip),%edx
xor    %eax,%eax
mov    $0x45,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2e9d(%rip),%edx
xor    %eax,%eax
mov    $0x46,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2e85(%rip),%edx
xor    %eax,%eax
mov    $0x47,%ecx
cmp    %edx,%ecx
mov    %al,-0x1(%rbp)
jne    11c7 <chk_data+0xc7>
movsbl 0x2e6d(%rip),%ecx
mov    $0x48,%eax
cmp    %ecx,%eax
sete   %al
mov    %al,-0x1(%rbp)
mov    -0x1(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<chk_data>:
mov    $0x1,%eax
ret

LLVM IR (-O0):
@chk_data.c = internal global [10 x i8] c"ABCDEFGH\00\00"
define i32 @chk_data() {
%1 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 0)
%2 = sext i8 %1 to i32
%3 = icmp eq i32 65, %2
br i1 %3, label %4, label %32
4: ; preds = %0
%5 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 1)
%6 = sext i8 %5 to i32
%7 = icmp eq i32 66, %6
br i1 %7, label %8, label %32
8: ; preds = %4
%9 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 2)
%10 = sext i8 %9 to i32
%11 = icmp eq i32 67, %10
br i1 %11, label %12, label %32
12: ; preds = %8
%13 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 3)
%14 = sext i8 %13 to i32
%15 = icmp eq i32 68, %14
br i1 %15, label %16, label %32
16: ; preds = %12
%17 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 4)
%18 = sext i8 %17 to i32
%19 = icmp eq i32 69, %18
br i1 %19, label %20, label %32
20: ; preds = %16
%21 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 5)
%22 = sext i8 %21 to i32
%23 = icmp eq i32 70, %22
br i1 %23, label %24, label %32
24: ; preds = %20
%25 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 6)
%26 = sext i8 %25 to i32
%27 = icmp eq i32 71, %26
br i1 %27, label %28, label %32
28: ; preds = %24
%29 = load i8, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @chk_data.c, i64 0, i64 7)
%30 = sext i8 %29 to i32
%31 = icmp eq i32 72, %30
br label %32
32: ; preds = %28, %24, %20, %16, %12, %8, %4, %0
%33 = phi i1 [ false, %24 ], [ false, %20 ], [ false, %16 ], [ false, %12 ], [ false, %8 ], [ false, %4 ], [ false, %0 ], [ %31, %28 ]
%34 = zext i1 %33 to i32
ret i32 %34
}

LLVM IR (-O2):
define i32 @chk_data() {
ret i32 1
}