(original) (raw)

Here is a module:

@vals = internal unnamed\_addr global \[20000000 x i32\] undef, align 4

When I compile it into an .o file:

$ clang -c test.ll
$ objdump -t test.o

test.o: file format elf64-x86-64

SYMBOL TABLE:
0000000000000000 l df \*ABS\* 0000000000000000 test.ll
0000000000000000 l O .data 0000000004c4b400 vals


LLVM puts the global in the .data section, and results in a 77MB .o file of mostly zeroes. Why does this variable not go in the .bss section?