On Tue, Oct 2, 2012 at 2:11 PM, Eli Friedman <[email protected]> wrote:
> On Sun, Sep 30, 2012 at 11:56 PM, Nico Weber <[email protected]> wrote:
>> Hi,
>>
>> the attached patch adds codegen support for __uuidof. It's fairly
>> similar to how the RTTI descriptor code works. What __uuidof does:
>> Structs can be tagged with __declspec(uuid("some string with
>> numbers")), and after that __uuidof(taggedstruct) returns a IID struct
>> filled with the numbers from the uuid declspec attribute. See
>> test/Parser/MicrosoftExtensions.cpp and the included test for more
>> information.
>>
>> I moved GetUuidAttrOfType() out of Sema since codegen now needs it
>> too. I couldn't find a great place for it -- it's a static function on
>> CXXUuidofExpr. Since that expression isn't very useful without uuid
>> attrs, it's a reasonable place for it I think.
>>
>> I'm not very familiar with visibilities. WeakAnyLinkage is mostly a
>> guess, so please check that.
>>
>> The name of the symbol generated for __uuidof constants seems to be an
>> implementation detail, so I just made up a mangling ("__uuid_"
>> followed by the contents of the uuid, see GetAddrOfIIDDescriptor()).
>
> If the linkage is weak, the name matters, because the symbol will be
> merged with symbols from other compilation units.  You might want to
> consider marking it internal/constant/unnamed_addr instead, if the
> address doesn't actually matter; that way, the name is irrelevant, and
> the compiler and/or linker can still merge them.

Thanks! As far as I can tell that's good enough. Done.

Attachment: uuid.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to