1 /* PR 81908 - FAIL: gfortran.dg/alloc_comp_auto_array_2.f90 -O3 -g -m32
2    { dg-do compile }
3    { dg-options "-O2 -Wall" } */
4 
5 #define SIZE_MAX __SIZE_MAX__
6 typedef __SIZE_TYPE__ size_t;
7 
f0(char * d,const char * s,size_t n)8 void f0 (char *d, const char *s, size_t n)
9 {
10   if (n > 0 && n <= SIZE_MAX / 2 - 1)
11     n = 0;
12 
13   __builtin_memcpy (d, s, n);
14 }
15 
f1(char * d,const char * s,size_t n)16 void f1 (char *d, const char *s, size_t n)
17 {
18   if (n > 0 && n <= SIZE_MAX / 2)
19     n = 0;
20 
21   __builtin_memcpy (d, s, n);   /* { dg-bogus "\\\[-Wstringop-overflow=]" } */
22 }
23 
f2(char * d,const char * s,size_t n)24 void f2 (char *d, const char *s, size_t n)
25 {
26   if (n > 0 && n <= SIZE_MAX / 2 + 1)
27     n = 0;
28 
29   __builtin_memcpy (d, s, n);
30 }
31 
f3(char * d,const char * s,size_t n)32 void f3 (char *d, const char *s, size_t n)
33 {
34   if (n > 0 && n <= SIZE_MAX - 1)
35     n = 0;
36 
37   __builtin_memcpy (d, s, n);   /* { dg-bogus "\\\[-Wstringop-overflow=]" } */
38 }
39 
f4(char * d,const char * s,size_t n)40 void f4 (char *d, const char *s, size_t n)
41 {
42   if (n > 0 && n <= SIZE_MAX)
43     n = 0;
44 
45   __builtin_memcpy (d, s, n);
46 }
47