1/* PR41779: Wconversion cannot see through real*integer promotions. */ 2/* { dg-do compile } */ 3/* { dg-skip-if "doubles are floats" { "avr-*-*" } { "*" } { "" } } */ 4/* { dg-options "-std=c99 -Wconversion" { target c } } */ 5/* { dg-options "-Wconversion" { target c++ } } */ 6/* { dg-require-effective-target large_double } */ 7 8float f1(float x, unsigned short y) 9{ 10 return x * y; 11} 12 13float f2(float x, short y) 14{ 15 return x * y; 16} 17 18float f3(float x, char y) 19{ 20 return x * y; 21} 22 23float f4(float x, unsigned char y) 24{ 25 return x * y; 26} 27 28float f5(float x, int y) 29{ 30 return x * y; /* { dg-warning "conversion" } */ 31} 32 33double c1(float x, unsigned short y, int z) 34{ 35 return z ? x + x : y; 36} 37 38double c2(float x, short y, int z) 39{ 40 return z ? x + x : y; 41} 42 43double c3(float x, char y, int z) 44{ 45 return z ? x + x : y; 46} 47 48double c4(float x, unsigned char y, int z) 49{ 50 return z ? x + x : y; 51} 52 53double c5(float x, int y, int z) 54{ 55 return z ? x + x : y; /* { dg-warning "conversion" } */ 56} 57