(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
s390/
target-attribute/
tattr-12.c
       1  /* Functional tests for the "target" attribute and pragma.  */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-require-effective-target target_attribute } */
       5  /* { dg-options "-O3 -march=z13 -mstack-guard=0 -mstack-size=512" } */
       6  
       7  extern char *bar(int x);
       8  
       9  void da(int x)
      10  {
      11    bar(x);
      12    bar(x + 1);
      13    /* { dg-final { scan-assembler-times "\ttmll\t%r15,256" 2 { target { lp64 } } } } */
      14    /* { dg-final { scan-assembler-times "\ttml\t%r15,384" 2 { target { ! lp64 } } } } */
      15  }
      16  
      17  #pragma GCC target("stack-size=1024,stack-guard=0")
      18  void p1(int x)
      19  {
      20    bar(x);
      21    bar(x + 1);
      22    /* { dg-final { scan-assembler-times "\ttmll\t%r15,768" 1 { target { lp64 } } } } */
      23    /* { dg-final { scan-assembler-times "\ttml\t%r15,896" 1 { target { ! lp64 } } } } */
      24  }
      25  #pragma GCC reset_options
      26  
      27  #pragma GCC target("stack-size=2048,stack-guard=0")
      28  void p0(int x)
      29  {
      30    bar(x);
      31    bar(x + 1);
      32    /* { dg-final { scan-assembler-times "\ttmll\t%r15,1792" 1 { target { lp64 } } } } */
      33    /* { dg-final { scan-assembler-times "\ttml\t%r15,1920" 1 { target { ! lp64 } } } } */
      34  }
      35  #pragma GCC reset_options
      36  
      37  __attribute__ ((target("stack-size=4096,stack-guard=0")))
      38  void a1(int x)
      39  {
      40    bar(x);
      41    bar(x + 1);
      42    /* { dg-final { scan-assembler-times "\ttmll\t%r15,3840" 1 { target { lp64 } } } } */
      43    /* { dg-final { scan-assembler-times "\ttml\t%r15,3968" 1 { target { ! lp64 } } } } */
      44  }
      45  
      46  __attribute__ ((target("stack-size=8192,stack-guard=0")))
      47  void a0(int x)
      48  {
      49    bar(x);
      50    bar(x + 1);
      51    /* { dg-final { scan-assembler-times "\ttmll\t%r15,7936" 1 { target { lp64 } } } } */
      52    /* { dg-final { scan-assembler-times "\ttml\t%r15,8064" 1 { target { ! lp64 } } } } */
      53  }
      54  
      55  void d(int x)
      56  {
      57    bar(x);
      58    bar(x + 1);
      59  }