// 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); }