http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55940
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-11 11:23:02 UTC --- Your assumptions are wrong according to documentation: @item cdecl @cindex functions that do pop the argument stack on the 386 @opindex mrtd On the Intel 386, the @code{cdecl} attribute causes the compiler to assume that the calling function pops off the stack space used to pass arguments. This is useful to override the effects of the @option{-mrtd} switch. which doesn't say that all arguments will be passed on the stack.