================
@@ -4253,7 +4260,7 @@ class FunctionProtoType final
     FunctionType::ExtInfo ExtInfo;
     unsigned Variadic : 1;
     unsigned HasTrailingReturn : 1;
-    unsigned AArch64SMEAttributes : 6;
----------------
sdesmalen-arm wrote:

Thanks for both your input! The Arm attributes will probably be used reasonably 
sparsely in the sense that they particularly target code to optimise using SME 
intrinsics/state. By not adding the attribute it will be a normal function that 
does not share any SME state. So I agree it makes sense to refactor the code a 
bit such that these attributes don't affect code that does not use any of these 
attributes.

I've created #78424 to do this, so that the Arm SME attributes will have their 
own TrailingObject and are therefore only allocated when a function uses the 
attributes. I hope that addresses the concerns! (When that patch lands, I'll 
rebase this one)

It will be more difficult to do something for ExtProtoInfo, given how this is 
designed, but as @AaronBallman says the struct is already huge and is allocated 
as-needed. My experiment showed that adding more bits didn't make a practical 
difference to the size of the ExtProtoInfo. Not sure if this can differ between 
compilers, but I didn't see it expanding the struct by a byte.

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

Reply via email to