(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Warray-parameter-8.c
       1  /* Verify that combinations of array type qualifiers render correctly.
       2     { dg-do compile }
       3     { dg-options "-Warray-parameter" } */
       4  
       5  void fatm (int[_Atomic 1]);       // { dg-message "previously declared as 'int\\\[_Atomic 1]" }
       6  void fatm (int[_Atomic 2]);       // { dg-warning "argument 1 of type 'int\\\[_Atomic 2]' with mismatched bound" }
       7  
       8  
       9  void fcst (int[const 2]);         // { dg-message "previously declared as 'int\\\[const 2]" }
      10  void fcst (int[const 3]);         // { dg-warning "argument 1 of type 'int\\\[const 3]' with mismatched bound" }
      11  
      12  
      13  void frst (int[restrict 3]);      // { dg-message "previously declared as 'int\\\[restrict 3]" }
      14  void frst (int[restrict 4]);      // { dg-warning "argument 1 of type 'int\\\[restrict 4]' with mismatched bound" }
      15  
      16  void fvol (int[volatile 4]);      // { dg-message "previously declared as 'int\\\[volatile 4]" }
      17  void fvol (int[volatile 5]);      // { dg-warning "argument 1 of type 'int\\\[volatile 5]' with mismatched bound" }
      18  
      19  
      20  void fcr (int[const restrict 1]);   // { dg-message "previously declared as 'int\\\[\(const restrict|restrict const\) 1]" }
      21  void fcr (int[restrict volatile 2]); // { dg-warning "argument 1 of type 'int\\\[\(restrict volatile|volatile restrict\) 2]' with mismatched bound" }
      22  void fcr (int[const restrict volatile 3]);  // { dg-warning "argument 1 of type 'int\\\[const volatile restrict 3]' with mismatched bound" }
      23  
      24  
      25  extern int n;
      26  
      27  void fcx_n (int [const 1][n]);      // { dg-message "previously declared as 'int\\\[const 1]\\\[n]'" "note" }
      28  void fcx_n (int [restrict 2][n]);   // { dg-warning "argument 1 of type 'int\\\[restrict 2]\\\[n]' with mismatched bound" }
      29  
      30  
      31  extern int n1, n2;
      32  
      33  /* The mismatch in the array bound should be diagnosed but the mismatch
      34     in the VLA should not be without -Wvla-parameter.  */
      35  void fc3_n1 (int [const 3][n1]);   // { dg-message "previously declared as 'int\\\[const 3]\\\[n1]'" "note" }
      36  void fc3_n1 (int [const 5][n2]);   // { dg-warning "argument 1 of type 'int\\\[const 5]\\\[n2]' with mismatched bound" }