modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20000825-1.c (about) 1 typedef signed int s32; 2 typedef signed long s64; 3 typedef unsigned int u32; 4 typedef unsigned long u64; 5 6 extern __inline__ u32 foobar(int logmask) 7 { 8 u32 ret = ~(1 << logmask); // fails 9 // s32 ret = ~(1 << logmask); // ok 10 // u64 ret = ~(1 << logmask); // ok 11 // s64 ret = ~(1 << logmask); // ok 12 return ret; 13 } 14 15 // This procedure compiles fine... 16 u32 good(u32 var) 17 { 18 var = foobar(0); 19 return var; 20 } 21 22 // This procedure does not compile... 23 // Same as above, but formal parameter is a pointer 24 // Both good() and fails() compile ok if we choose 25 // a different type for "ret" in foobar(). 26 u32 fails(u32 *var) 27 { 28 *var = foobar(0); 29 return *var; 30 } 31