// PERMUTE_ARGS: -O
// https://issues.dlang.org/show_bug.cgi?id=17940
struct Array
{
    long length;
    long ptr;
}
struct Struct
{
    bool b = true;
}
void fun1(int)
{
}
void fun2(Array arr, int, int)
{
    assert(!arr.length);
}
void fn(Struct* str)
{
    Array arr;
    if (!str)
    {
        return;
    }
    if (str)
    {
        fun1(str.b);
    }
    if (str.b)
    {
        fun2(arr, str.b, 0);
    }
}
void main()
{
    Struct s;
    fn(&s);
}