erichkeane added subscribers: aaron.ballman, erichkeane. erichkeane added a comment.
You'll not be able to get the C++ spelling without it getting into the standard. Additionally, it seems easy enough to calculate upon need, so storing it in the AST is a waste. @aaron.ballman is likely another person who can review this. ================ Comment at: docs/LanguageExtensions.rst:1093 library. +* ``__is_trivially_relocatable`` (Clang): Determines whether moving an object + of type ``type``, and then destroying the source object, is functionally ---------------- How would this behave with unions? I don't see any exclusions happening on union-ness. A CXXRecordDecl can be a union as well as a class. ================ Comment at: include/clang/AST/DeclCXX.h:482 + /// and a defaulted destructor. + unsigned IsNaturallyTriviallyRelocatable : 1; + ---------------- Typically we'd have this calculated when requested rather than stored. I suspect using a bit for something like this isn't going to be terribly acceptable. ================ Comment at: include/clang/Basic/Attr.td:2096 +def TriviallyRelocatable : InheritableAttr { + let Spellings = [CXX11<"", "trivially_relocatable", 200809>, + CXX11<"clang", "trivially_relocatable">]; ---------------- This spelling is almost definitely not acceptable until it is in the standard. Also, why specify that it was added in 2008? ================ Comment at: include/clang/Basic/DiagnosticSemaKinds.td:8207 +def err_attribute_missing_on_first_decl : Error< + "type %0 declared %1 after its first declaration">; ---------------- I'm shocked that there isn't a different diagnostic to do this same thing. @aaron.ballman likely knows better... I haven't seen the usage yet, but I presume you don't necessarily want a behavior that doesn't allow forward declarations. ================ Comment at: lib/AST/Type.cpp:2234 +bool QualType::isTriviallyRelocatableType(const ASTContext &Context) const { + QualType T = Context.getBaseElementType(*this); + if (T->isIncompleteType()) ---------------- You likely want to canonicalize here. ================ Comment at: lib/Parse/ParseDeclCXX.cpp:3811 case ParsedAttr::AT_CXX11NoReturn: + case ParsedAttr::AT_TriviallyRelocatable: return true; ---------------- A note for future reviewers, after the C++11 spelling is removed, this likely needs to go as well. Repository: rC Clang https://reviews.llvm.org/D50119 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits