zequanwu marked 2 inline comments as done.
zequanwu added inline comments.

================
Comment at: clang/include/clang/Basic/Attr.td:1799
+  let Spellings = [Clang<"nomerge">];
+  let Subjects = SubjectList<[Function]>;
+  let Documentation = [NoMergeDocs];
----------------
rnk wrote:
> Clang supports many function-like things that are not functions, for example, 
> Objective C method declarations are not considered FunctionDecls in the AST. 
> Blocks are another function-like thing. I see below there is a `FunctionLike` 
> subject type. Lets use that here.
> 
> I would like to make it possible to apply this attribute directly to call 
> expressions as well, but I don't see a good example of how to do that in the 
> existing attribute. I'd like to be able to do this, for example:
> 
> ```
> void __attribute__((noreturn)) bar();
> void foo(bool cond) {
>   if (cond)
>     [[clang::nomerge]] bar();
>   else
>     [[clang::nomerge]] bar();
> }
> ```
> 
> This gives the user fine-grained control. It allows them to call some 
> existing API, like perhaps RaiseException, of which they do not control the 
> declaration, and mark the calls as unmergeable.
It seems like there is no exiting example of call site attributes. 
https://github.com/llvm/llvm-project/blob/master/clang/lib/CodeGen/CGCall.cpp#L4767.
 And the function `EmitCall` may not know existence of call site attributes.


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

https://reviews.llvm.org/D79121



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

Reply via email to