Re: [PATCH 1/4] environ-selftests: Ignore -Wself-move warning

Sergio Durigan Junior
2017-06-21T20:29:31Z

On Wednesday, June 21 2017, Simon Marchi wrote:

> clang gives this warning:
>
> /home/emaisin/src/binutils-gdb/gdb/unittests/environ-selftests.c:139:7: error: explicitly moving variable of type 'gdb_environ' to itself [-Werror,-Wself-move]
> env = std::move (env);
> ~~~ ^ ~~~
>
> In this case, ignoring the warning locally is clearly the thing to do,
> since it warns exactly about the behavior we want to test. We also
> don't want to disable this globally, because we would want the compiler

"we would want the code compiler to warn"

> if we wrote that in real code.
>
> I filed a bug in GCC's bugzilla to suggest to add this warning:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81159

Thanks!

> gdb/ChangeLog:
>
> * unittests/environ-selftests.c (run_tests): Ignore -Wself-move
> warning.
> ---
> gdb/unittests/environ-selftests.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/gdb/unittests/environ-selftests.c b/gdb/unittests/environ-selftests.c
> index ecc3955..6989c5e 100644
> --- a/gdb/unittests/environ-selftests.c
> +++ b/gdb/unittests/environ-selftests.c
> @@ -136,7 +136,16 @@ run_tests ()
> env.clear ();
> env.set ("A", "1");
> SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> +
> +#ifdef __clang__
> +#pragma clang diagnostic push
> +#pragma clang diagnostic ignored "-Wself-move"
> +#endif /* __clang__ */
> env = std::move (env);
> +#ifdef __clang__
> +#pragma clang diagnostic pop
> +#endif /* __clang__ */

Wow. I know we've discussed this before, but this is ugly :-/. Anyway,
this file is just a unittest, so I'm totally fine with this. Do you
think it's worth putting a comment on top, just to explicitly say what
this is doing?

Otherwise, LGTM.

> +
> SELF_CHECK (strcmp (env.get ("A"), "1") == 0);
> SELF_CHECK (strcmp (env.envp ()[0], "A=1") == 0);
> SELF_CHECK (env.envp ()[1] == NULL);
> --
> 2.7.4

Thanks,

--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible