http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57260
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Lee Duhem from comment #5) > (In reply to Andrew Pinski from comment #4) > > (In reply to Andrew Pinski from comment #3) > > > Looks like sibcalls are incorrectly done. > > > > Or maybe not since it is no longer a call but rather a sibcall which means > > it can never be using call16 here since it is not a real call. > > > > Smallest testcase: > > int shouldbecall16(void); > > int g(void) { return shouldbecall16(); } > > I think the following testcase is closer to my case: > int shouldbecall16(void); > int g(void) { shouldbecall16(); return 0; } No it is not; mine is the one which shows the issue: static void __glXDRIenterServer(GLboolean rendering) { .... DRIWakeupHandler(((void *)0), 0, ((void *)0)); }