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

Simon Marchi
2017-06-21T20:15:50Z

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
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

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__ */
+
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