void main() {
  int a[3];
  int h[3] = {100, 200, 300};
  int c[3] = {100, 200};
  int d[] = {100, 200, 300};
  char s1[4] = {'h', 'a', 'h', 'a'};
  char s2[5] = "haha";
  int f[3] = {[0] = 100, [2] = 200};
  int g[300] = {[0] = 100, [2] = 300, [100 ... 200] = 900};
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x500,%rsp
mov    0xede(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    0xedc(%rip),%eax
mov    %eax,-0x10(%rbp)
mov    0x13aa(%rip),%rax
mov    %rax,-0x24(%rbp)
mov    0x13a8(%rip),%eax
mov    %eax,-0x1c(%rbp)
mov    0xec2(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xec0(%rip),%eax
mov    %eax,-0x28(%rbp)
mov    0x138f(%rip),%eax
mov    %eax,-0x34(%rbp)
mov    0x138a(%rip),%eax
mov    %eax,-0x39(%rbp)
mov    0x1385(%rip),%al
mov    %al,-0x35(%rbp)
mov    0xe9f(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xe9d(%rip),%eax
mov    %eax,-0x40(%rbp)
lea    -0x500(%rbp),%rdi
lea    0xe9c(%rip),%rsi
mov    $0x4b0,%edx
call   1030 <memcpy@plt>
add    $0x500,%rsp
pop    %rbp
ret

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

LLVM IR (-O0):
@__const.main.h = [3 x i32] [i32 100, i32 200, i32 300]
@__const.main.c = [3 x i32] [i32 100, i32 200, i32 0]
@__const.main.d = [3 x i32] [i32 100, i32 200, i32 300]
@__const.main.s1 = [4 x i8] c"haha"
@__const.main.s2 = [5 x i8] c"haha\00"
@__const.main.f = [3 x i32] [i32 100, i32 0, i32 200]
@__const.main.g = <{ [201 x i32], [99 x i32] }> <{ [201 x i32] [i32 100, i32 0, i32 300, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900, i32 900], [99 x i32] zeroinitializer }>
define void @main() {
%1 = alloca [3 x i32]
%2 = alloca [3 x i32]
%3 = alloca [3 x i32]
%4 = alloca [3 x i32]
%5 = alloca [4 x i8]
%6 = alloca [5 x i8]
%7 = alloca [3 x i32]
%8 = alloca [300 x i32]
%9 = bitcast [3 x i32]* %2 to i8*
%10 = bitcast [3 x i32]* %3 to i8*
%11 = bitcast [3 x i32]* %4 to i8*
%12 = bitcast [4 x i8]* %5 to i8*
%13 = bitcast [5 x i8]* %6 to i8*
%14 = bitcast [3 x i32]* %7 to i8*
%15 = bitcast [300 x i32]* %8 to i8*
ret void
}

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