This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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
http://sergiodj.net/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]