(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
attr-assume-3.c
       1  /* Portable assumptions */
       2  /* { dg-do compile } */
       3  /* { dg-options "-std=c2x" } */
       4  
       5  void
       6  foo (int x)
       7  {
       8    if (x == 1)
       9      goto l1;						/* { dg-error "jump into statement expression" } */
      10    else if (x == 2)
      11      goto l2;						/* { dg-error "jump into statement expression" } */
      12    else if (x == 3)
      13      goto l3;						/* { dg-error "jump into statement expression" } */
      14    [[gnu::assume (({ l0:; if (x == 0) goto l0; 1; }))]];
      15    [[gnu::assume (({ if (x == 0) __builtin_abort (); 1; }))]];
      16    [[gnu::assume (({ l1:; 1; }))]];			/* { dg-message "label 'l1' defined here" } */
      17    [[gnu::assume (({ l2:; 1; }))]];			/* { dg-message "label 'l2' defined here" } */
      18    __attribute__((assume (({ l3:; 1; }))));		/* { dg-message "label 'l3' defined here" } */
      19    [[gnu::assume (({ l4:; 1; }))]];			/* { dg-message "label 'l4' defined here" } */
      20    [[gnu::assume (({ l5:; 1; }))]];			/* { dg-message "label 'l5' defined here" } */
      21    __attribute__((assume (({ l6:; 1; }))));		/* { dg-message "label 'l6' defined here" } */
      22    switch (x)						/* { dg-message "switch starts here" } */
      23      {
      24      case 7:
      25        [[gnu::assume (({ case 8:; 1; }))]];		/* { dg-error "switch jumps into statement expression" } */
      26        __attribute__((assume (({ default:; 1; }))));	/* { dg-error "switch jumps into statement expression" } */
      27        break;
      28      }
      29    if (x == 4)
      30      goto l4;						/* { dg-error "jump into statement expression" } */
      31    else if (x == 5)
      32      goto l5;						/* { dg-error "jump into statement expression" } */
      33    else if (x == 6)
      34      goto l6;						/* { dg-error "jump into statement expression" } */
      35  }