/* PR tree-optimization/113024 */
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-forwprop1" } */
/* Make sure we have just a single cast per function rather than 2 casts in some cases.  */
/* { dg-final { scan-tree-dump-times " = \\\(\[a-z \]*\\\) \[xy_\]" 16 "forwprop1" { target { ilp32 || lp64 } } } } */

unsigned int f1 (signed char x) { unsigned long long y = x; return y; }
unsigned int f2 (unsigned char x) { unsigned long long y = x; return y; }
unsigned int f3 (signed char x) { long long y = x; return y; }
unsigned int f4 (unsigned char x) { long long y = x; return y; }
int f5 (signed char x) { unsigned long long y = x; return y; }
int f6 (unsigned char x) { unsigned long long y = x; return y; }
int f7 (signed char x) { long long y = x; return y; }
int f8 (unsigned char x) { long long y = x; return y; }
unsigned int f9 (signed char x) { return (unsigned long long) x; }
unsigned int f10 (unsigned char x) { return (unsigned long long) x; }
unsigned int f11 (signed char x) { return (long long) x; }
unsigned int f12 (unsigned char x) { return (long long) x; }
int f13 (signed char x) { return (unsigned long long) x; }
int f14 (unsigned char x) { return (unsigned long long) x; }
int f15 (signed char x) { return (long long) x; }
int f16 (unsigned char x) { return (long long) x; }