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")
      10  int p1(void)
      11  {
      12    foo();
      13    return 1;
      14  }
      15  #pragma GCC reset_options
      16  
      17  #pragma GCC target("no-small-exec")
      18  int p0(void)
      19  {
      20    foo();
      21    foo();
      22    return 2;
      23  }
      24  #pragma GCC reset_options
      25  
      26  __attribute__ ((target("small-exec")))
      27  int a1(void)
      28  {
      29    foo();
      30    foo();
      31    foo();
      32    foo();
      33    return 4;
      34  }
      35  
      36  __attribute__ ((target("no-small-exec")))
      37  int 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 } } */