aaron.ballman added inline comments.

================
Comment at: clang/include/clang/Basic/Attr.td:3593
+def EnforceTCBLeaf : InheritableAttr {
+  let Spellings = [Clang<"enforce_tcb_leaf">];
+  let Subjects = SubjectList<[Function]>;
----------------
Are these two attributes mutually exclusive, or would it make sense for a 
function to use both of these at the same time?


================
Comment at: clang/lib/Sema/SemaChecking.cpp:16079-16084
+  for (const auto *Attr : Callee->specific_attrs<EnforceTCBAttr>()) {
+    CalleeTCBs.insert(Attr->getTCBName());
+  }
+  for (const auto *Attr : Callee->specific_attrs<EnforceTCBLeafAttr>()) {
+    CalleeTCBs.insert(Attr->getTCBName());
+  }
----------------
NoQ wrote:
> aaron.ballman wrote:
> > Pretty sure you can remove the manual loops here with something like this.
> `std::inserter` doesn't seem to work with `llvm::StringSet` but 
> `llvm::for_each` works and seems to be more compact(?)
Weird about `std::inserter` but this is a good improvement as-is.


================
Comment at: clang/lib/Sema/SemaChecking.cpp:16090-16092
+    if (CalleeTCBs.count(CallerTCB) == 0) {
+      Diag(TheCall->getExprLoc(), diag::warn_tcb_enforcement_violation) << 
CallerTCB << Callee->getName();
+    }
----------------
NoQ wrote:
> aaron.ballman wrote:
> > 
> TIL that `<< Callee` adds quotes automatically. I should use clang diagnostic 
> builders more often :)
Yeah -- the diagnostic engine knows how to format named things and will 
automatically insert quotes for you when given a named thing. Super handy, but 
not always super obvious.


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

https://reviews.llvm.org/D91898

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

Reply via email to