[PATCH] D106394: [clang][pp] adds '#pragma include_instead'
Arthur O'Dwyer via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 21 09:51:50 PDT 2021
Quuxplusone added a comment.
> Hmm... I like prior art. That clangd supports it suggests that there's a section of code I can look at for inspiration if we were to replace this pragma with the IWYU comment-pragma (I wonder why they didn't just go with `#pragma IWYU ...`?). Is it reasonable for a compiler to interpret comments and issue/adjust diagnostics based on those comments? I thought that was the purpose of a //pp-pragma//.
I can answer that one! Pragmas tend to be for things with real in-game effects that require compiler support, such as `#pragma once` or `#pragma thumb`. If a TU contains a line of the form `#pragma ...` that the current compiler doesn't recognize, that's usually a bug. Compiler vendors reflect that fact by providing `-Wunknown-pragmas` (and turning it on pretty aggressively). https://stackoverflow.com/questions/132667/how-to-disable-pragma-warnings
For things that "don't really matter" — such as (1) source encoding, (2) switch case fallthroughs, (3) IWYU relationships — it's usually easier to just do a special kind of comment, rather than forcing all your users to worry about `-Wunknown-pragmas` warnings on older or third-party compilers. All compilers silently ignore "unknown comments," which is exactly what we want for these kinds of things. OTOH, special comments are hard to hide behind macros, whereas `[[attributes]]` and `_Pragma("s")` are easier.
If IWYU has already developed a de facto standard for this information, I would recommend libc++ just use it (perhaps with no changes needed in clang at all). This would have the benefit of getting libc++ to work with IWYU out-of-the-box, instead of having to go beg IWYU to implement support for a new `#pragma include_instead`. Is any IWYU developer aware of D106394 <https://reviews.llvm.org/D106394> yet? You should definitely try to get them involved here.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106394/new/
https://reviews.llvm.org/D106394
More information about the cfe-commits
mailing list