[PATCH] D131143: [Clang] Interaction of FP pragmas and function template instantiation
Serge Pavlov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 5 09:37:40 PDT 2022
sepavloff added a comment.
In D131143#3700373 <https://reviews.llvm.org/D131143#3700373>, @efriedma wrote:
>> In the case is explicit instantiation there is apparent connection
>> between a point in source code and instantiated function. It can
>> support interaction of pragmas that act in that point. For example, in
>> the code:
>>
>> #pragma STDC FENV_ROUND FE_DOWNWARD
>> template float func_05<short>(float, float);
>>
>> the instantiated function is created with the specified constant
>> rounding mode. The effect is same as if the template pattern were
>> textually inserted into the code with needed replacements.
>
> These pragmas aren't currently part of the C++ standard, but I strongly doubt the C++ standards committee would choose to do this.
This is an attempt to implement the interaction as proposed in the review of D129464 <https://reviews.llvm.org/D129464>. It is, of course, an extension, which may be convenient but nothing serious would happen if it is not implemented.
> You would end up with undefined behavior due to mismatched definitions, if the template is implicitly instantiated elsewhere.
Indeed, it makes the solution fragile.
> The "obvious" rule here is just to always use the pragma in effect at the point the template body is written.
Sure, it is already works in this way.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131143/new/
https://reviews.llvm.org/D131143
More information about the cfe-commits
mailing list