sdesmalen added inline comments.

================
Comment at: clang/test/Sema/aarch64-sme-func-attrs.c:181
 
+void non_za_definition(void) {
+  sme_arm_new_za(); // OK
----------------
rsandifo-arm wrote:
> sdesmalen wrote:
> > rsandifo-arm wrote:
> > > Would be good to have some tests for indirect function calls too (via 
> > > function pointers), to make sure that the diagnostic still works when no 
> > > decl is available.
> > > 
> > > I suppose this applies to D157269 too.
> > I'm not sure that's necessary because D127762 already added tests to ensure 
> > the attributes propagate on pointer types, which then sets the ExtProtoInfo 
> > for those values. This patch merely checks the SME attribute fields from 
> > ExtProtoInfo. i.e. there is already nothing depending on a declaration 
> > being available.
> But `Sema::checkCall` does have some tests that depend on the decl rather 
> than the type.  So the purpose of the test wouldn't be “does the attribute 
> stick when applied to indirect function types?” (which I agree is already 
> covered), but “does the new code correctly process the attribute on the 
> target of a function pointer type?”
The declaration is only relevant for the call-site, not the callee.

  if (ExtInfo.AArch64SMEAttributes & FunctionType::SME_PStateZASharedMask) {

The above line checks __arm_shared_za attribute of the callee (could be a decl, 
or a function pointer, but in either case is a prototyped function with the 
propagated attributes)

  if (auto *CallerFD = dyn_cast<FunctionDecl>(CurContext)) {

The above line checks if the call-site context is a FunctionDecl (or definition 
for that matter). If the call is not part of a declaration (e.g. it's part of 
some global initialiser), we know it cannot have any live ZA state (which I now 
realise is missing a test-case).

So I think that a test like this:

  __arm_new_za void foo(void (*f)() __arm_shared_za) { f(); }

is not testing anything that isn't already tested. But perhaps I'm still 
misunderstanding your point. If so, could you give an example of a test you 
have in mind?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D157270

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

Reply via email to