1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3 
4 extern void abort (void);
5 
6 static int __attribute__((regparm(1)))
bar(void * arg)7 bar(void *arg)
8 {
9   return arg != bar;
10 }
11 
12 static int __attribute__((noinline,noclone,regparm(1)))
foo(int (** bar)(void *))13 foo(int (__attribute__((regparm(1))) **bar)(void*))
14 {
15   return (*bar)(*bar);
16 }
17 
main()18 int main()
19 {
20   int (__attribute__((regparm(1))) *p)(void*) = bar;
21   if (foo(&p))
22     abort();
23   return 0;
24 }
25