// Tests for various visibility mismatch situations. // { dg-require-visibility "" } // { dg-final { scan-not-hidden "_ZN1A1fEv" } } struct __attribute ((visibility ("hidden"))) A { // This is OK, A::f gets default visibility. __attribute ((visibility ("default"))) void f (); }; void A::f() { } // This gets a warning because B objects might rely // on hidden symbols from A. struct B // { dg-warning "visibility" } { A a; }; // This one has explicit visibility, so it doesn't get a warning. struct __attribute ((visibility ("default"))) C { A a; };