[LLVMdev] Identical types with distinct names

Vikram Adve vadve at cs.uiuc.edu
Wed Jan 26 15:23:48 PST 2005


LLVM uses structural equivalence to distinguish types, so there's no 
direct way to retain multiple types with identical contents.  The C++ 
front-end generates a single struct for two such classes, and simply 
initializes their vtables differently to get the right function 
pointers.  You would need some hack like you said to create distinct 
structs, which may be ok if  you use it only for debugging.

(For those who are interested, this is a technical limitation because 
we lose some precision in analyses like pointer analysis, compared with 
a compiler that tracked distinct source types.)

--Vikram
http://www.cs.uiuc.edu/~vadve
http://llvm.cs.uiuc.edu/

On Jan 26, 2005, at 1:10 PM, Ben Payne wrote:

> Hi,
>
> I'm writing a frontend and I'd like to be able to provide
> names to struct types that mirror the names of the classes in
> the source language.  Unfortunately, some of these generated
> structs are sometimes identical for distinct classes, and so
> LLVM forces them to have the same type and same name.
>
> This makes debugging kind of confusing.  Is there some way to
> get the behavior I want without having to add bogus extra
> components to my structs to distinguish them?
>
> Thanks,
> Ben
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 1437 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20050126/fabe8253/attachment.bin>


More information about the llvm-dev mailing list