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. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
