1/* Test program for MPX map allocated bounds.
2
3   Copyright 2015-2023 Free Software Foundation, Inc.
4
5   Contributed by Intel Corp. <walfred.tedeschi@intel.com>
6			      <mircea.gherzan@intel.com>
7
8   This file is part of GDB.
9
10   This program is free software; you can redistribute it and/or modify
11   it under the terms of the GNU General Public License as published by
12   the Free Software Foundation; either version 3 of the License, or
13   (at your option) any later version.
14
15   This program is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   GNU General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
23#include <stdlib.h>
24#define SIZE  5
25
26typedef int T;
27
28void
29foo (T *p)
30{
31  T *x;
32
33#if defined  __GNUC__ && !defined __INTEL_COMPILER
34  __bnd_store_ptr_bounds (p, &p);
35#endif
36
37  x = p + SIZE - 1;
38
39#if defined  __GNUC__ && !defined __INTEL_COMPILER
40  __bnd_store_ptr_bounds (x, &x);
41#endif
42  /* Dummy assign.  */
43  x = x + 1;			/* after-assign */
44  return;
45}
46
47int
48main (void)
49{
50  T *a = NULL;
51
52  a = calloc (SIZE, sizeof (T));	/* after-decl */
53#if defined  __GNUC__ && !defined __INTEL_COMPILER
54  __bnd_store_ptr_bounds (a, &a);
55#endif
56
57  foo (a);				/* after-alloc */
58  free (a);
59
60  return 0;
61}
62