[PATCH] D146148: Float_t and double_t types shouldn't be modified by #pragma clang fp eval_method

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 23 12:01:08 PDT 2023


rjmccall added a comment.

In D146148#4217382 <https://reviews.llvm.org/D146148#4217382>, @zahiraam wrote:

> In D146148#4213475 <https://reviews.llvm.org/D146148#4213475>, @rjmccall wrote:
>
>> The user isn't modifying the `float_t` type definition, they're using it.  I think the diagnostic should say something like `cannot use type 'float_t' within '#pragma clang fp eval_method'; type is set according to the default eval method for the translation unit`.
>>
>> Is there any way we can infer an attribute for these typedefs when they're declared, then diagnose it in `DiagnoseUseOfDecl`?  Some sort of "available_only_in_default_eval_method" attribute?
>
> @rjmccall Thanks for the review.
> I might be able to call the DiagnoseUseOfDecl here https://github.com/llvm/llvm-project/blob/main/clang/lib/Sema/SemaType.cpp#L1609 but I don't seem to have access to the NameDecl (first argument of the function).

We already call DiagnoseUseOfDecl whenever you use a declaration.  You wouldn't need to inject any extra code into the core type-lookup operation.

> Would the attribute be on the Decl?

I'm suggesting that you could add a check in DiagnoseUseOfDecl for some new attribute that you would synthesize when we build a typedef with this name.  (We do something similar with library declarations of builtins.)  Or, better yet, we could just modify the header to explicitly use the attribute, or maybe add the attribute in a redeclaration in our own math.h; I don't know if those are feasible options.


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

https://reviews.llvm.org/D146148



More information about the cfe-commits mailing list