aaron.ballman added a comment.

Thank you for working on this patch -- be sure to add tests that ensure the 
attribute is properly prohibited on the expected targets.



================
Comment at: include/clang/Basic/Attr.td:299-300
   list<string> ObjectFormats;
+  // It indicates that a certain attribute is not supported on a specific
+  // platform, turn on support for this attribute by default
+  bit Negated = 0;
----------------
How about: `If set to false, indicates the attribute is supported only on the 
given target. If set to true, indicates the attribute is supported on all 
targets except the given target.`


================
Comment at: include/clang/Basic/Attr.td:324-325
 
+// We do not support the alias attribute on Apple platforms,
+// so I define a platform other than the Apple platform.
+def TargetDarwinNegative : TargetArch<["x86", "x86_64"]> {
----------------
This comment is a bit too specific, I'd probably drop the comment entirely as 
the code is sufficiently clear.


================
Comment at: include/clang/Basic/Attr.td:326
+// so I define a platform other than the Apple platform.
+def TargetDarwinNegative : TargetArch<["x86", "x86_64"]> {
+  let OSes = ["MacOSX"];
----------------
I think we'll want to pattern the names like `TargetNotFoo`.

One other thing is: this isn't really Darwin -- for instance, there's ARM and 
AArch64 variants, not just x86-based targets.


================
Comment at: include/clang/Basic/Attr.td:327
+def TargetDarwinNegative : TargetArch<["x86", "x86_64"]> {
+  let OSes = ["MacOSX"];
+  let Negated = 1;
----------------
I would expect the OS would be named "Darwin" and not "MacOSX" given the name 
of the target. Which flavor should be used, or should both be used?


================
Comment at: utils/TableGen/ClangAttrEmitter.cpp:2789
+  // is not supported on this platform
+  if(R->getValueAsBit("Negated"))
+    Test = "!(" + Test + ")";
----------------
The formatting is off here -- there should be a space after the `if`. I would 
recommend running your patch through clang-format 
(https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting).


Repository:
  rC Clang

https://reviews.llvm.org/D46805



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

Reply via email to