| // { dg-do run } |
| // { dg-options "-O2" } |
| // |
| // Copyright (C) 2001 Free Software Foundation, Inc. |
| // Contributed by Nathan Sidwell 18 May 2001 <nathan@codesourcery.com> |
| |
| // Bug 2781. We forgot to copy addressability information when |
| // cloning. |
| |
| struct B |
| { |
| B(int v1); |
| void Member (int v1); |
| static void Static (int v1); |
| }; |
| |
| struct D : B |
| { |
| D (int v1); |
| }; |
| |
| void xswap(int& x1) ; |
| |
| int xxx = 0; |
| |
| B::B(int v1) |
| { |
| xswap(v1); |
| xxx = v1; |
| } |
| |
| void B::Member(int v1) |
| { |
| xswap(v1); |
| xxx = v1; |
| } |
| |
| void B::Static(int v1) |
| { |
| xswap(v1); |
| xxx = v1; |
| } |
| |
| D::D(int v1) |
| : B (v1) |
| { |
| } |
| |
| void xswap (int& x1) { x1 = 2; } |
| |
| int main () |
| { |
| B p (1); |
| |
| if (xxx != 2) |
| return 1; |
| |
| D q (1); |
| if (xxx != 2) |
| return 2; |
| |
| p.Member (1); |
| if (xxx != 2) |
| return 3; |
| |
| p.Static (1); |
| if (xxx != 2) |
| return 4; |
| |
| return 0; |
| } |