diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/torture/pr60058.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/torture/pr60058.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60058.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60058.C new file mode 100644 index 000000000..1144137cb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60058.C @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-require-visibility "" } */ + +typedef enum {} UErrorCode; +class A { +public: + virtual A &m_fn1(A &, const A &, UErrorCode &) const; + void m_fn2(); + A(); + A(int); +}; +class __attribute__((visibility("hidden"))) B : public A { +public: + B(A &p1) : norm2(p1), set(0) {} + A &m_fn1(A &, const A &, UErrorCode &) const; + A &norm2; + const int &set; +}; + +UErrorCode a; +A c; +void fn1(A *p1) { + A b; + p1->m_fn1(b, 0, a).m_fn2(); +} + +void fn2() { + B d(c); + fn1(&d); +} |