1 /* { dg-do run } */
2 /* { dg-shouldfail "bounds violation" } */
3 /* { dg-options "-fcheck-pointer-bounds -mmpx" } */
4 
5 
6 #define SHOULDFAIL
7 
8 #include "mpx-check.h"
9 
10 struct s1
11 {
12   int i1;
13   int i2;
14   int *p;
15 } s1;
16 
17 int buf[100];
18 
get()19 struct s1 __attribute__((noinline)) get ()
20 {
21   struct s1 s;
22   s.p = buf;
23   return s;
24 }
25 
rd(struct s1 s,int i)26 int __attribute__((noinline)) rd (struct s1 s, int i)
27 {
28   int res = s.p[i];
29   printf ("%d\n", res);
30   return res;
31 }
32 
mpx_test(int argc,const char ** argv)33 int mpx_test (int argc, const char **argv)
34 {
35   struct s1 s = get ();
36 
37   rd (s, -1);
38 
39   return 0;
40 }
41