URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
typedef signed int s32;
|
typedef signed int s32;
|
typedef signed long s64;
|
typedef signed long s64;
|
typedef unsigned int u32;
|
typedef unsigned int u32;
|
typedef unsigned long u64;
|
typedef unsigned long u64;
|
|
|
extern __inline__ u32 foobar(int logmask)
|
extern __inline__ u32 foobar(int logmask)
|
{
|
{
|
u32 ret = ~(1 << logmask); // fails
|
u32 ret = ~(1 << logmask); // fails
|
// s32 ret = ~(1 << logmask); // ok
|
// s32 ret = ~(1 << logmask); // ok
|
// u64 ret = ~(1 << logmask); // ok
|
// u64 ret = ~(1 << logmask); // ok
|
// s64 ret = ~(1 << logmask); // ok
|
// s64 ret = ~(1 << logmask); // ok
|
return ret;
|
return ret;
|
}
|
}
|
|
|
// This procedure compiles fine...
|
// This procedure compiles fine...
|
u32 good(u32 var)
|
u32 good(u32 var)
|
{
|
{
|
var = foobar(0);
|
var = foobar(0);
|
return var;
|
return var;
|
}
|
}
|
|
|
// This procedure does not compile...
|
// This procedure does not compile...
|
// Same as above, but formal parameter is a pointer
|
// Same as above, but formal parameter is a pointer
|
// Both good() and fails() compile ok if we choose
|
// Both good() and fails() compile ok if we choose
|
// a different type for "ret" in foobar().
|
// a different type for "ret" in foobar().
|
u32 fails(u32 *var)
|
u32 fails(u32 *var)
|
{
|
{
|
*var = foobar(0);
|
*var = foobar(0);
|
return *var;
|
return *var;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.