/* This used to fail as we would convert f into just return (unsigned int)usVlanID which is wrong. */ int f(unsigned short usVlanID) __attribute__((noinline,noclone)); int f(unsigned short usVlanID) { unsigned int uiVlanID = 0xffffffff; int i; if ((unsigned short)0xffff != usVlanID) uiVlanID = (unsigned int)usVlanID; return uiVlanID; } int main(void) { if (f(1) != 1) __builtin_abort (); if (f(0xffff) != -1) __builtin_abort (); return 0; }