1 // { dg-do assemble }
2 // { dg-options "-Wsign-conversion" }
3
4 // Copyright (C) 1999 Free Software Foundation, Inc.
5 // Contributed by Nathan Sidwell 21 Nov 1999 <nathan@acm.org>
6
7 // make sure we only warn on assigning a negative (signed) value
8 // to an unsigned type, and don't warn just if the unsigned value
9 // happens to have the top bit set.
10
11 typedef unsigned U;
12
13 void fn (unsigned);
14
fu()15 void fu ()
16 {
17 unsigned s1 = -1u;
18 unsigned s2(-1u);
19 unsigned volatile s3 = -1u;
20 unsigned const s4 = -1u;
21 unsigned const &s5(-1u);
22 s1 = -1u;
23 fn (-1u);
24 }
25
fU()26 void fU ()
27 {
28 U s1 = -1u;
29 U s2(-1u);
30 U volatile s3 = -1u;
31 U const s4 = -1u;
32 U const &s5(-1u);
33 s1 = -1u;
34 fn (-1u);
35 }
36
fs()37 void fs ()
38 {
39 unsigned s1 = -1; // { dg-warning "" } initialization
40 unsigned s2(-1); // { dg-warning "" } initialization
41 unsigned volatile s3 = -1;// { dg-warning "" } initialization
42 unsigned const s4 = -1; // { dg-warning "" } initialization
43 unsigned const &s5(-1); // { dg-warning "" } initialization
44 s1 = -1; // { dg-warning "" } assignment
45 fn (-1); // { dg-warning "" } passing
46 }
47
fss()48 void fss ()
49 {
50 unsigned s1 = -(-1);
51 unsigned s2(-(-1));
52 unsigned volatile s3 = -(-1);
53 unsigned const s4 = -(-1);
54 unsigned const &s5(-(-1));
55 s1 = -(-1);
56 fn (-(-1));
57 }
58
fsz()59 void fsz ()
60 {
61 unsigned s1 = -0;
62 unsigned s2(-0);
63 unsigned volatile s3 = -0;
64 unsigned const s4 = -0;
65 unsigned const &s5(-0);
66 s1 = -0;
67 fn (-0);
68 }
69