+++ /dev/null
-typedef signed int s32;
-typedef signed long s64;
-typedef unsigned int u32;
-typedef unsigned long u64;
-
-extern __inline__ u32 foobar(int logmask)
-{
- u32 ret = ~(1 << logmask); // fails
- // s32 ret = ~(1 << logmask); // ok
- // u64 ret = ~(1 << logmask); // ok
- // s64 ret = ~(1 << logmask); // ok
- return ret;
-}
-
-// This procedure compiles fine...
-u32 good(u32 var)
-{
- var = foobar(0);
- return var;
-}
-
-// This procedure does not compile...
-// Same as above, but formal parameter is a pointer
-// Both good() and fails() compile ok if we choose
-// a different type for "ret" in foobar().
-u32 fails(u32 *var)
-{
- *var = foobar(0);
- return *var;
-}
-