// PR tree-opt/18040 // { dg-do compile } // { dg-options "-O3" } int PyObject_IsTrue(); struct object_base { void ptr() const; void ptr1() const; }; struct object : public object_base { typedef void (object::*bool_type)() const; inline operator bool_type() const { return PyObject_IsTrue() ? &object_base::ptr : &object::ptr1; } }; void f(); void g (void) { for (unsigned n = 0; n < 100; ++n) { object kv; if (kv) f(); } }