typedef unsigned int uint16_t __attribute__((__mode__(__HI__))); typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__))); char c = 12; volatile long l = 1; volatile uint32_t (*p)(); static uint16_t bar () { return c; } static uint32_t foo () { return ((uint32_t)bar() << 16 | bar()); } __attribute__((noinline)) void func2 (uint32_t(*ptr)()) { p = ptr(); l = foo(); } void main () { func2(foo); }