[llvm-dev] Use of array type in globals in LTO

Mehdi Amini via llvm-dev
2016-08-26T15:32:26Z

Hi,

> Recently, I noticed that less number of global variables are merged in
global-merge pass and in some global variable, array types are used instead of
its original type. For example, [4xi8] with align 4 is used for a i32  global
variable. For me, it seems that such pattern is observed after r278338
(Resolution-based LTO API).

Are you sure it is performed in the global merge pass? Can you provide an
example of input IR where you see this now but didn’t before?
Also can you confirm you’re using the gold-linker?

> Can anyone give me little bit more insight if such type change was
intended? If then why such uses of array type is needed?

The transformation I know of is the common variables merging, bug it is not new.
We use an array because we have to merge globals from different size and an
array of bytes is the most straightforward representation for that.

—
Mehdi