http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51667
--- Comment #12 from Uros Bizjak <ubizjak at gmail dot com> 2011-12-24 13:50:16 UTC --- foo can be simplified a bit: void __attribute__((noinline)) foo (short *a, int t) { short r = *a; if (t) bar ((unsigned short) r); else bar ((signed short) r); }