xbolva00 added inline comments.

================
Comment at: clang/include/clang/Basic/AttrDocs.td:522
+  let Content = [{
+This function attribute suppresses the inlining of a function at the call sites
+of the function.
----------------
Feel free to suggest better wording :)


================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:4044
+def warn_function_stmt_attribute_precedence : Warning<
+  "statement attribute %0 has higher precedence than function attribute "
+  "'%select{always_inline|flatten}1'">,
----------------
Feel free to suggest better wording :)


================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:4045
+  "statement attribute %0 has higher precedence than function attribute "
+  "'%select{always_inline|flatten}1'">,
+  InGroup<IgnoredAttributes>;
----------------
Ideally this would be something like

"statement attribute %0 has higher precedence than function attribute %1"

but...


================
Comment at: clang/lib/Sema/SemaStmtAttr.cpp:231
+        S.Diag(St->getBeginLoc(), 
diag::warn_function_stmt_attribute_precedence)
+          << A << (Decl->hasAttr<AlwaysInlineAttr>() ? 0 : 1);
+  }
----------------
.. not sure how to get AttributeCommonInfo here so I could use "<< X".


================
Comment at: clang/test/CodeGen/attr-noinline.cpp:15-16
+// CHECK: call void @_Z1fbb({{.*}}) #[[NOINLINEATTR]]
+  [[clang::noinline]] [] { bar(); bar(); }(); // noinline only applies to the 
anonymous function call
+// CHECK: call void @"_ZZ3fooiENK3$_0clEv"(%class.anon* {{[^,]*}} %ref.tmp) 
#[[NOINLINEATTR]]
+  [[clang::noinline]] for (bar(); bar(); bar()) {}
----------------
aaron.ballman wrote:
> I'd also like to see the behavior tested with blocks and statement 
> expressions.
> 
> Also, I'd like to see test cases where the call is "hidden" from the user's 
> sight. e.g.,
> ```
> struct S {
>   friend bool operator==(const S &LHS, const S &RHS);
> };
> 
> void f(bool);
> 
> void func(const S &s1, const S &s2) {
>   [[clang::noinline]]f(s1 == s2); // Is operator==() then not inlined?
> }
> ```
Added as tests. Yes, not inlined.


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

https://reviews.llvm.org/D119061

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

Reply via email to