diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/other/init2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/other/init2.C | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/other/init2.C b/gcc/testsuite/g++.dg/other/init2.C new file mode 100644 index 000000000..0b85aa67d --- /dev/null +++ b/gcc/testsuite/g++.dg/other/init2.C @@ -0,0 +1,49 @@ +// { dg-do run } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 20 Dec 2001 <nathan@nathan@codesourcery.com> + +// PR 160. Wrong code emitted for some reference initializers. + +void Foo () +{ +} + +int fail; + +class C +{ + public: + int m; + int &r; + + C () ; +}; + +C::C () + : m (1), r ((Foo (), m)) +{ + m = 10; + + if (r != m) + fail = 1; + else if (&m != &r) + fail = 2; +} +int main () +{ + int m (1); + int &r ((Foo (),m)); + + m = 10; + if (r != m) + fail = 3; + else if (&r != &m) + fail = 4; + + if (!fail) + { + C c; + } + return fail; +} |