main() {
  struct {
    int i, j;
  } x[] = {
      [0 ... 5] = {5, 6},
      [3] = 1,
      [4] = {3, 4},
  };
  if (x[0].i != 5 || x[0].j != 6 || x[1].i != 5 || x[1].j != 6 || x[2].i != 5 ||
      x[2].j != 6 || x[3].i != 1 || x[3].j != 6 || x[4].i != 3 || x[4].j != 4 ||
      x[5].i != 5 || x[5].j != 6)
    abort();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x40(%rbp),%rdi
lea    0xec6(%rip),%rsi
mov    $0x30,%edx
call   1040 <memcpy@plt>
cmpl   $0x5,-0x40(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x6,-0x3c(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x5,-0x38(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x6,-0x34(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x5,-0x30(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x6,-0x2c(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x1,-0x28(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x6,-0x24(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x3,-0x20(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x4,-0x1c(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x5,-0x18(%rbp)
jne    11bc <main+0x9c>
cmpl   $0x6,-0x14(%rbp)
je     11c1 <main+0xa1>
call   1030 <abort@plt>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
xor    %eax,%eax
ret

LLVM IR (-O0):
%struct.anon = type { i32, i32 }
@__const.main.x = [6 x %struct.anon] [%struct.anon { i32 5, i32 6 }, %struct.anon { i32 5, i32 6 }, %struct.anon { i32 5, i32 6 }, %struct.anon { i32 1, i32 6 }, %struct.anon { i32 3, i32 4 }, %struct.anon { i32 5, i32 6 }]
define i32 @main() {
%1 = alloca i32
%2 = alloca [6 x %struct.anon]
store i32 0, i32* %1
%3 = bitcast [6 x %struct.anon]* %2 to i8*
%4 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 0
%5 = getelementptr inbounds %struct.anon, %struct.anon* %4, i32 0, i32 0
%6 = load i32, i32* %5
%7 = icmp ne i32 %6, 5
br i1 %7, label %63, label %8
8: ; preds = %0
%9 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 0
%10 = getelementptr inbounds %struct.anon, %struct.anon* %9, i32 0, i32 1
%11 = load i32, i32* %10
%12 = icmp ne i32 %11, 6
br i1 %12, label %63, label %13
13: ; preds = %8
%14 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 1
%15 = getelementptr inbounds %struct.anon, %struct.anon* %14, i32 0, i32 0
%16 = load i32, i32* %15
%17 = icmp ne i32 %16, 5
br i1 %17, label %63, label %18
18: ; preds = %13
%19 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 1
%20 = getelementptr inbounds %struct.anon, %struct.anon* %19, i32 0, i32 1
%21 = load i32, i32* %20
%22 = icmp ne i32 %21, 6
br i1 %22, label %63, label %23
23: ; preds = %18
%24 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 2
%25 = getelementptr inbounds %struct.anon, %struct.anon* %24, i32 0, i32 0
%26 = load i32, i32* %25
%27 = icmp ne i32 %26, 5
br i1 %27, label %63, label %28
28: ; preds = %23
%29 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 2
%30 = getelementptr inbounds %struct.anon, %struct.anon* %29, i32 0, i32 1
%31 = load i32, i32* %30
%32 = icmp ne i32 %31, 6
br i1 %32, label %63, label %33
33: ; preds = %28
%34 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 3
%35 = getelementptr inbounds %struct.anon, %struct.anon* %34, i32 0, i32 0
%36 = load i32, i32* %35
%37 = icmp ne i32 %36, 1
br i1 %37, label %63, label %38
38: ; preds = %33
%39 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 3
%40 = getelementptr inbounds %struct.anon, %struct.anon* %39, i32 0, i32 1
%41 = load i32, i32* %40
%42 = icmp ne i32 %41, 6
br i1 %42, label %63, label %43
43: ; preds = %38
%44 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 4
%45 = getelementptr inbounds %struct.anon, %struct.anon* %44, i32 0, i32 0
%46 = load i32, i32* %45
%47 = icmp ne i32 %46, 3
br i1 %47, label %63, label %48
48: ; preds = %43
%49 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 4
%50 = getelementptr inbounds %struct.anon, %struct.anon* %49, i32 0, i32 1
%51 = load i32, i32* %50
%52 = icmp ne i32 %51, 4
br i1 %52, label %63, label %53
53: ; preds = %48
%54 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 5
%55 = getelementptr inbounds %struct.anon, %struct.anon* %54, i32 0, i32 0
%56 = load i32, i32* %55
%57 = icmp ne i32 %56, 5
br i1 %57, label %63, label %58
58: ; preds = %53
%59 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* %2, i64 0, i64 5
%60 = getelementptr inbounds %struct.anon, %struct.anon* %59, i32 0, i32 1
%61 = load i32, i32* %60
%62 = icmp ne i32 %61, 6
br i1 %62, label %63, label %64
63: ; preds = %58, %53, %48, %43, %38, %33, %28, %23, %18, %13, %8, %0
unreachable
64: ; preds = %58
ret i32 0
}

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