[clang] [SystemZ][z/OS] Implement #pragma export (PR #141671)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 13 07:52:25 PST 2025
erichkeane wrote:
> > Missing a bunch of tests as well. Did those disappear?
>
> We had a discussion about the syntax of this pragma and what we should be supporting. We originally thought about taking the syntax for pragma map from the XL compiler and using it for all of these declaration attribute pragmas. That's what the original PR had. After the original feedback and the fact that that syntax didn't encompass all aspects of C++ we decided to keep these pragmas as being simple identifiers. In the XL compiler the pragma export was only accepted in C. The support for C++ is something we were adding to clang. C++ programs used the _Export keyword in XL. I believe this is similar to other pragmas in clang (eg. pragma weak). The pragma is there for backwards compatibility with C compat source. If you want to decorate C++ names use either the attribute (visibility in this case) or for XL compatibility use the _Export keyword.
>
> Because I simplified the syntax that is accepted by the pragma, I removed a bunch of tests as well. Hopefully the coverage is still there for the simplified syntax. Please comment if you find something missing.
>
> > We should also probably have a document somewhere that explains exactly what this extension is doing, so that we can better understand how to review it.
>
> I can definitely do that. Do you know where to put this documentation? For attributes there is the AttrDocs.td. I did not see an equivalent for pragmas.
>
> Thanks
I mentioned above, its missing a massive amount of dependent cases/etc. Also, the not-allowing-FQNs seems unfortunate, though you're at least testing those as errors.
As far as documentation, we have LanguageExtensions.rst that I think this fits into.
https://github.com/llvm/llvm-project/pull/141671
More information about the cfe-commits
mailing list