[LLVMdev] Identical types with distinct names

Chris Lattner sabre at nondot.org
Wed Jan 26 22:07:36 PST 2005


On Wed, 26 Jan 2005, Vikram Adve wrote:
> 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.

Yup, as others have said, there isn't a great way to do this.  The basic 
deal is that names in LLVM (except for globals) are purely "best effort to 
make compiler debugging easier", they have no guarantees.

> (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.)

Hrm, that issue is much bigger than just structural vs named equivalence, 
but I guess it is tangentially related.

-Chris

> --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
>

-Chris

-- 
http://nondot.org/sabre/
http://llvm.cs.uiuc.edu/




More information about the llvm-dev mailing list