/* PR target/67770 */ | |
/* { dg-do run { target ia32 } } */ | |
/* { dg-require-effective-target trampolines } */ | |
/* { dg-options "-O2" } */ | |
__attribute__ ((noinline)) void | |
foo (int i, void (* __attribute__ ((regparm (3))) bar) (int)) | |
{ | |
bar (i); | |
} | |
int | |
main () | |
{ | |
int p = 0; | |
__attribute__ ((regparm (3), noinline)) void | |
bar (int i) | |
{ | |
if (__builtin_expect (i, 0)) | |
++p; | |
} | |
foo (0, bar); | |
bar (0); | |
if (p != 0) | |
__builtin_abort (); | |
foo (1, bar); | |
bar (1); | |
if (p != 2) | |
__builtin_abort (); | |
return 0; | |
} |