http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47222
--- Comment #9 from Jan Hubicka <hubicka at ucw dot cz> 2011-01-09 18:06:44 UTC --- > > Run-time abort. Please check 32bit. OK, these reproduce to me. Adding "staitic" into the testcase as follows: /* PR middle-end/12210 */ /* Origin: Ossadchy Yury A. <waspco...@mail.ru> */ /* This used to fail on i686 because the argument was not copied to the right location by __builtin_apply after the direct call. */ /* { dg-do run } */ #define INTEGER_ARG 5 extern void abort(void); static void foo(int arg) { if (arg != INTEGER_ARG) abort(); } static void bar(int arg) { foo(arg); __builtin_apply(foo, __builtin_apply_args(), 16); } int main(void) { bar(INTEGER_ARG); return 0; } make it fail too, so it is pre-existing wrong code. I am looking into what gets wrong. Honza