1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2021-2024 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18struct baz_type
19{
20  int a = 0;
21  int b = 1;
22  int c = 2;
23};
24
25struct foo_type
26{
27  int func (baz_type b, float f)
28  {
29    return var++;
30  }
31
32  foo_type &operator+= (const baz_type &rhs)
33  {
34    var += (rhs.a + rhs.b + rhs.c);
35    return *this;
36  }
37
38  static int static_method (float f, baz_type b)
39  {
40    return b.a + b.b + b.c + (int) f;
41  }
42
43  int var = 120;
44};
45
46volatile int global_var;
47
48int
49main (void)
50{
51  baz_type b = {};
52  float f = 1.0;
53
54  foo_type foo;
55
56  foo += b;
57
58  global_var = foo.static_method (f, b);
59
60  return foo.func (b, f);	/* Break here.  */
61}
62