aaron.ballman added a comment.

Overall, I think this LGTM, but I did find a few nits. Can you fix the 
clang-format issues? Also, I'd like to see some C++ test coverage that shows 
how this works on template (partial) specializations, lambdas (with GNU-style 
syntax), and overloaded functions. If we deviate from the GCC behavior in any 
cases, it'd be great to capture it in comments (unless you think the deviation 
is intentional, at which point we should document it in AttrDocs.td, or you 
think the deviation needs to be fixed before we land it).



================
Comment at: clang/include/clang/Basic/Attr.td:2706
+                      featuresStrs_begin(), featuresStrs_begin() + Index,
+                      [ FeatureStr ](StringRef S) { return S == FeatureStr; });
+    }
----------------



================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:11289
+          "or a string literal containing a comma-separated list of versions">,
+      InGroup<DiagGroup<"target-clones-mixed-specifiers">>;
+def warn_target_clone_duplicate_options
----------------
Should this ad hoc group be listed within the `FunctionMultiVersioning` group?


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:1968-1972
+  if (checkAttrMutualExclusion<TargetAttr>(S, D, AL) ||
+      checkAttrMutualExclusion<TargetClonesAttr>(S, D, AL) ||
+      checkAttrMutualExclusion<CPUDispatchAttr>(S, D, AL) ||
+      checkAttrMutualExclusion<CPUSpecificAttr>(S, D, AL))
+    return;
----------------
This should be handled in Attr.td via a `def : MutualExclusions<[....]>;` if 
possible.


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:3274
 static void handleTargetAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
+  if (checkAttrMutualExclusion<TargetAttr>(S, D, AL) ||
+      checkAttrMutualExclusion<TargetClonesAttr>(S, D, AL) ||
----------------
Same here.


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:3342
+static void handleTargetClonesAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
+  if (checkAttrMutualExclusion<TargetAttr>(S, D, AL) ||
+      checkAttrMutualExclusion<TargetClonesAttr>(S, D, AL) ||
----------------
And here


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D51650/new/

https://reviews.llvm.org/D51650

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to