aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/attr-nonstring-9.c
blob: 4fb1e5d69bbfb516fa6a9e221245c653211f4847 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* Test to exercise attribute "nonstring" syntax.
   { dg-do compile }
   { dg-options "-Wattributes" }  */

#define ATTR(list) __attribute__ (list)
#define NONSTR     ATTR ((nonstring))

/* Verify it's accepted on char[] arrays.  */
extern NONSTR char nsx_1[][3];
extern char NONSTR nsx_2[][3];
extern char nsx_3[][3] NONSTR;

extern NONSTR char ns1[1][4];
extern char NONSTR ns2[3][5];
extern char ns3[5][6] NONSTR;

extern NONSTR char ns4[1][2][3][4];
extern char NONSTR ns5[2][3][4][5][6];
extern char ns6[1][2][3][1][2][3][1][2][3] NONSTR;

/* Verify it's accepted on char[] pointers.  */
extern NONSTR char (*pns_1)[3];
extern char NONSTR (*pns_2)[4];
extern char (*NONSTR pns_3)[5];

extern NONSTR char (*pns_4)[1][2];
extern char NONSTR (*pns_5)[2][3][1][7][4];
extern char (*NONSTR pns_6)[1][1][1][2][1][1][1][2][1][1][1][2][1][1][7];

struct S
{
/* Verify it's accepted on char[] member pointers.  */
  NONSTR char (*mpns_1)[3];
  char NONSTR (*mpns_2)[4];
  char (*NONSTR mpns_3)[5];

/* Verify it's accepted on char[] member arrays.  */
  NONSTR char mns1[1][2];
  char NONSTR mns3[3][3];
  char mns5[5][4] NONSTR;

/* Verify it's accepted on char[] flexible array members.  */
  char mnsx[][5] NONSTR;
};

void func (NONSTR char (*pns1)[2], char NONSTR (*pns2)[3], char (* NONSTR pns3)[4])
{
  (void)pns1;
  (void)pns2;
  (void)pns3;
}