[LLVMdev] [Debug Info + LTO] Type Uniquing for C types?

Eric Christopher
Fri, 11 Oct 2013 19:07:03 -0000

>
> Since we don't have ODR, we may have macros defined differently for a
struct
> in a .h file,
> thus having two versions of the struct from two different CU. It seems that
> we can't assume
> structs with the same name and defined in the same file/line/column are the
> same.
>

Ah right sorry, I remember this. Also, macros are evil, just ask the
modules guys :)

> Hashing the types can happen either at the front end or at IR level. That
is
> our first design choice :)
>

Sorta :)

> I think we should try not to hash the types for non-LTO builds at the front
> end or at IR level, since it does not give us
> any benefit given that we are hashing them at the back end.
>
> One advantage of hashing it at IR level is that we can just hash the
MDNodes
> that affect the
> type MDNode, at front end, the AST contains more information and should be
> harder to hash.

It depends upon the goals. If the goal is to make debug information
post-link smaller then just using the type hashing machinery for
structs will be sufficient. However, if it's to save space during an
LTO link then we'll want to do it in the front end.

Doug: Have a link for how you do the C type merging for modules?

-eric