1999-11-22 Nathan Sidwell <nathan@acm.org>
+ * g++.old-deja/g++.other/warn4.C: New test.
+
+1999-11-22 Nathan Sidwell <nathan@acm.org>
+
* g++.old-deja/g++.eh/cleanup2.C: New test.
* g++.old-deja/g++.ext/pretty2.C: New test.
* g++.old-deja/g++.ext/pretty3.C: New test.
--- /dev/null
+// Build don't link:
+
+// Copyright (C) 1999 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 21 Nov 1999 <nathan@acm.org>
+
+// make sure we only warn on assigning a negative (signed) value
+// to an unsigned type, and don't warn just if the unsigned value
+// happens to have the top bit set.
+
+typedef unsigned U;
+
+void fn (unsigned);
+
+void fu ()
+{
+ unsigned s1 = -1u;
+ unsigned s2(-1u);
+ unsigned volatile s3 = -1u;
+ unsigned const s4 = -1u;
+ unsigned const &s5(-1u);
+ s1 = -1u;
+ fn (-1u);
+}
+
+void fU ()
+{
+ U s1 = -1u;
+ U s2(-1u);
+ U volatile s3 = -1u;
+ U const s4 = -1u;
+ U const &s5(-1u);
+ s1 = -1u;
+ fn (-1u);
+}
+
+void fs ()
+{
+ unsigned s1 = -1; // WARNING - initialization
+ unsigned s2(-1); // WARNING - initialization
+ unsigned volatile s3 = -1;// WARNING - initialization
+ unsigned const s4 = -1; // WARNING - initialization
+ unsigned const &s5(-1); // WARNING - initialization
+ s1 = -1; // WARNING - assignment
+ fn (-1); // WARNING - passing
+}
+
+void fss ()
+{
+ unsigned s1 = -(-1);
+ unsigned s2(-(-1));
+ unsigned volatile s3 = -(-1);
+ unsigned const s4 = -(-1);
+ unsigned const &s5(-(-1));
+ s1 = -(-1);
+ fn (-(-1));
+}
+
+void fsz ()
+{
+ unsigned s1 = -0;
+ unsigned s2(-0);
+ unsigned volatile s3 = -0;
+ unsigned const s4 = -0;
+ unsigned const &s5(-0);
+ s1 = -0;
+ fn (-0);
+}