This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/4] environ-selftests: Ignore -Wself-move warning
On 2017-06-21 23:28, Pedro Alves wrote:
On 06/21/2017 10:05 PM, Simon Marchi wrote:
Yeah, I didn't expect to have to put the #ifdefs for __clang__ though.
Without them, gcc emits a warning [-Wunknown-pragma]. We always have
the option to turn -Wunknown-pragma off globally, what do you prefer?
Don't both GCC and Clang understand "#pragma GCC diagnostic" instead?
Yes, but then it's GCC that complains that it doesn't know the warning:
/home/emaisin/src/binutils-gdb/gdb/unittests/environ-selftests.c:141:32:
error: unknown option after ‘#pragma GCC diagnostic’ kind
[-Werror=pragmas]
#pragma GCC diagnostic ignored "-Wself-move"
^
Or better even, wrap it in some macros (and use _Pragma):
#define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push")
#define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop")
#define DIAGNOSTIC_IGNORE(option) \
_Pragma (STRINGIFY (GCC diagnostic ignored option))
Oh that's interesting. The gcc doc said that _Pragma was added exactly
for this purpose (to be usable in macros). I'll try that.
Alternatively, you could replace the std::move with a cast
to rvalue ref, which is just what std::move really is:
-env = std::move (env);
+env = static_cast<gdb_environ &&> (env);
I guess that with a comment explaining why we use that it would be ok,
but that would not be my first choice either.
Thanks,
Simon