[cfe-dev] Silencing "unused argument" for injected default arguments
Martin Storsjö via cfe-dev
cfe-dev at lists.llvm.org
Fri Sep 13 04:01:42 PDT 2019
Hi,
In my setups with clang, I'm using a thin frontend wrapper which passes a
bunch of custom defaults (allowing using any stock clang executable,
without requiring it to be built with CLANG_DEFAULT_* set to my desired
state). The main set of flags I currently use is this:
-target $TARGET -rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld
-fuse-cxa-atexit
Many of them are silent (like -fuse-ld=lld despite only compiling, not
linking), but e.g. -stdlib=libc++ is considered unused if compiling C
code. (Just looking at the driver name, clang vs clang++, isn't enough for
deciding to omit it; it could also be "clang -x c++" etc, and I'd prefer
not to try to deduce that in the wrapper.)
In some cases it also adds a few -D and -Wl,-l<lib>, where the -Wl,-l also
warns while compiling.
To mitigate this, I'm also adding -Qunused-arguments, which works fine,
but is a bit too overreaching.
Would it make sense to add some mechanism to flag these arguments as
default ones that clang shouldn't warn about being unused?
That could be something like --start-no-unused-arguments <args>
--end-no-unused-arguments.
I know about the clang config files, which also allows setting default
flags, which are exempt from unused warnings, and I've tried that, but for
various reasons I'm still more comfortable with setting them via a
wrapper. (E.g. on windows, the config file setup would require having N
copies of clang.exe, one for each triple combination, while I currently
can do with just copies of the wrapper and one single clang.exe.)
// Martin
More information about the cfe-dev
mailing list