// { dg-do assemble  }
// GROUPS passed visibility
struct base
{
    protected:
        void base_func() {}// { dg-message "" } .*protected.*
};
struct derived : public base
{
    protected:
        void derived_func(base *ptr) { ptr->base_func(); }// { dg-error "" }  within this context
};