================
@@ -2726,7 +2726,7 @@ def : MutualExclusions<[AlwaysInline, NotTailCalled]>;
 def NoStackProtector : InheritableAttr {
   let Spellings = [Clang<"no_stack_protector">, CXX11<"gnu", 
"no_stack_protector">,
                    C23<"gnu", "no_stack_protector">, Declspec<"safebuffers">];
-  let Subjects = SubjectList<[Function]>;
+  let Subjects = SubjectList<[Function, LocalVar]>;
----------------
AaronBallman wrote:

GCC does not appear to support this behavior: https://godbolt.org/z/ef1zWrEn9
MSVC does not appear to support this behavior either: 
https://godbolt.org/z/hK4ezrTfv

Do you know if either of those projects intend to allow this on a local 
variable as well? If not, I would expect to see `SimpleHandler` removed here 
and code added to SemaDeclAttr.cpp to reject a local variable when those 
spellings are used.

The hard problem is what to do with `__attribute__((no_stack_protector))` 
because that's somewhere between GCC and Clang in terms of who "owns" its 
behavior. I think it's probably fine to extend the functionality there, but 
with a GCC-compat warning. WDYT @erichkeane ?

https://github.com/llvm/llvm-project/pull/173311
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to