1 /* { dg-do compile } */
2 /* { dg-options "-O -fcf-protection" } */
3 /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */
4 /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */
5 /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 2 } } */
6 
7 int func (int a) __attribute__ ((nocf_check));
8 int (*fptr) (int a) __attribute__ ((nocf_check));
9 
foo(int arg)10 int foo (int arg)
11 {
12 int a, b;
13   a = func (arg);
14   b = (*fptr) (arg);
15   return a+b;
16 }
17 
18 int __attribute__ ((nocf_check))
func(int arg)19 func (int arg)
20 {
21 int (*fptrl) (int a) __attribute__ ((nocf_check));
22   return arg*(*fptrl)(arg);
23 }
24