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