aaron.ballman added inline comments.

================
Comment at: clang/include/clang/Basic/Attr.td:1435
+  let Spellings = [GCC<"leaf">];
+  let Subjects = SubjectList<[Function]>;
+  let Documentation = [Undocumented];
----------------
Should this attribute also be supported on things like ObjC method decls or 
other function-like interfaces?


================
Comment at: clang/include/clang/Basic/Attr.td:1436
+  let Subjects = SubjectList<[Function]>;
+  let Documentation = [Undocumented];
+  let SimpleHandler = 1;
----------------
This should be referring to `LeafDocs` rather than undocumented.


================
Comment at: clang/include/clang/Basic/AttrDocs.td:3909
+The ``leaf`` attribute is used as a compiler hint to improve dataflow analysis 
in library functions.
+Functions marked as ``leaf`` attribute are not allowed to enter their caller's 
translation unit.
+Therefore, they cannot use or modify any data that does not escape the current 
compilation unit.
----------------
as leaf -> with the leaf

I'm not certain how to interpret that functions are not allowed to enter their 
caller's translation unit. I sort of read that as leaf functions are not 
allowed to call (or otherwise jump) out of the translation unit in which 
they're defined -- is that about right?


================
Comment at: clang/include/clang/Basic/AttrDocs.td:3910
+Functions marked as ``leaf`` attribute are not allowed to enter their caller's 
translation unit.
+Therefore, they cannot use or modify any data that does not escape the current 
compilation unit.
+
----------------
What sort of diagnostic checking should the user expect? e.g., can the user 
expect Clang to diagnose obviously incorrect code like:
```
[[gnu::leaf]] void func(void (*fp)(void)) {
  fp(); // This seems like a bad thing
}
```


================
Comment at: clang/include/clang/Basic/AttrDocs.td:3913
+For more information see
+`gcc documentation 
<https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html>`
+}];
----------------
We should probably link to the latest docs 
(https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html) rather 
than 4.7.2.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D90275

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

Reply via email to