// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96156
// { dg-do run }
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
struct S96156
{
    __gshared void* ptr;
    int x;
    this(int x) { ptr = &this; this.x = x; }
    @disable this(this);
}
auto f96156()
{
    return g96156();
}
auto g96156()
{
    return h96156();
}
auto h96156()
{
    return S96156(100);
}
void main()
{
    auto s = f96156();
    assert(&s == S96156.ptr);
}