// { dg-do assemble } // { dg-options "-Wconversion" } // Copyright (C) 2000 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 6 Mar 2000 // initialization to 'int' from to 'double' We expect consistent warnings // whenever a float is implicitly truncated to int, make sure references // don't confuse us, as Gerald Pfeifer found out. struct X { X (int const &); X (int const &, int const &); }; void foo (int const &); void wibble (int const &); void wibble (int const &, int const &); void punk (int const & = 3.5f); // { dg-warning "" } in passing void rock (); void rock (int const &, int const & = 3.5f); // { dg-warning "" } in passing void fn () { X x2(3.5f); // { dg-warning "" } float to int X x4(1, 3.5f); // { dg-warning "" } float to int X x6(3.5f, 1); // { dg-warning "" } float to int X y2 = 3.5f; // { dg-warning "" } float to int int j2 (3.5f); // { dg-warning "" } float to int int k2 = 3.5f; // { dg-warning "" } float to int j2 = 3.5f; // { dg-warning "" } float to int foo (3.5f); // { dg-warning "" } float to int wibble (3.5f); // { dg-warning "" } float to int wibble (1, 3.5f); // { dg-warning "" } float to int wibble (3.5f, 1); // { dg-warning "" } float to int punk (); // { dg-warning "" } float to int rock (1); // { dg-warning "" } float to int } // and make sure we really know when something's unsigned void foo () { X x2(-1); X x4(1, -1); X x6(-1, 1); X y2 = -1; int j2 (-1); int k2 = -1; j2 = -1; foo (-1); wibble (-1); wibble (1, -1); wibble (-1, 1); }