1 /* Functional tests for the "target" attribute and pragma. */ 2 3 /* { dg-do compile } */ 4 /* { dg-require-effective-target target_attribute } */ 5 /* { dg-options "-mno-small-exec" } */ 6 7 extern void foo(void); 8 9 #pragma GCC target("small-exec") p1(void)10int p1(void) 11 { 12 foo(); 13 return 1; 14 } 15 #pragma GCC reset_options 16 17 #pragma GCC target("no-small-exec") p0(void)18int p0(void) 19 { 20 foo(); 21 foo(); 22 return 2; 23 } 24 #pragma GCC reset_options 25 26 __attribute__ ((target("small-exec"))) a1(void)27int a1(void) 28 { 29 foo(); 30 foo(); 31 foo(); 32 foo(); 33 return 4; 34 } 35 36 __attribute__ ((target("no-small-exec"))) a0(void)37int a0(void) 38 { 39 foo(); 40 foo(); 41 foo(); 42 foo(); 43 foo(); 44 foo(); 45 foo(); 46 foo(); 47 return 8; 48 } 49 50 /* { dg-final { scan-assembler-times "\tbras\t" 5 } } */ 51