ojhunt wrote:

> > No, ptrauth is not a feature, it is an extension and should be reported as 
> > such. The real bug here is that you're missing an extension warning when 
> > `__ptrauth` is used
> 
> I thought our general policy was that we don't trigger pedantic warnings for 
> reserved keywords (like anything with a `__` prefix)?

the problem is that `__has_extension` simply reports false on anything marked 
as an extension, so feature checks performed via `__has_extension` stop working.

The more I think about this the more weird the behavior is - you can still use 
the extensions (I think you can simply suppress the warnings for the cases 
where extensions do actually produce them), you just can't check for them :-/

An alternative approach - that would require significant code updates - would 
be to blast down a pile of implicit macros for all the current feature tests, 
which would at least provide a non-`__has_extension` based approach for 
testing. Obviously this will require a pile of work and testing and basically 
end up with a lot of `__has_feature(...) || defined(feature macro)` but that 
would resolve the `__has_extension` problem.

Failing that we could add a flag to the internal extension model so that some 
extensions will return the correct value even if -pedantic-errors is set.

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

Reply via email to