================
@@ -7559,6 +7559,26 @@ The attributes ``__arm_in(S)``, ``__arm_out(S)``, 
``__arm_inout(S)`` and
   }];
 }
 
+def ArmAgnosticDocs : Documentation {
+  let Category = DocCatArmSmeAttributes;
+  let Content = [{
+The ``__arm_agnostic`` keyword applies to prototyped function types and
+specifies that the function is agnostic about the given state S and
----------------
rsandifo-arm wrote:

I wonder whether “is agnostic about” will mean much to someone who doesn't 
already know what the attribute does.  Perhaps we should instead present this 
as an alternative calling convention for functions that do not share particular 
state with their callers.

That is, the effect of calling:
```
  void f(void) __attribute__((arm_agnostic("sme")));
```
on C/C++ SME state is equivalent to calling:
```
  void f(void);
```
since both share no SME state with their callers.  But if these two `f`s were 
exposed at ABI boundaries, they would have different calling conventions, and 
the object code would take a different approach to managing the state.

(That isn't suggested wording!  Just trying to describe what I mean.)

https://github.com/llvm/llvm-project/pull/121788
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to