// https://bugzilla.gdcproject.org/show_bug.cgi?id=171
// { dg-do run }
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
void test171a()
{
    int count = 0;
    short a = -1;
    while (a != 0)
    {
        a >>>= 1;
        count++;
        assert(count <= 16);
    }
}
void test171b()
{
    uint[3] lhs = [99, 201, 300],
            rhs = [-1, 0, 0];
    long t = 0;
    for (int i = 0; i < 3; i++)
    {
        t += lhs[i];
        t -= rhs[i];
        lhs[i] = cast(uint) t;
        t >>= uint.sizeof * 8;
    }
    assert(lhs == [100, 200, 300]);
}
void main()
{
    test171a();
    test171b();
}