// PR tree-optimization/80032 // { dg-do compile { target c++11 } } // { dg-options "-O2" } // If DCE removes too many CLOBBERs then stack usage goes through the // roof as stack slots can no longer be shared. // { dg-additional-options "-Wstack-usage=200" { target x86_64-*-* i?86-*-* } } typedef unsigned a; namespace test { enum b { c }; class ADataContainer; class BitMask; namespace api { enum DataStore { candidate }; } using d = api::DataStore; namespace db { class e; class f; class g; class ManagedObjectConst { public: ManagedObjectConst(const ManagedObjectConst &); bool isFieldDefault(a, d) const; ADataContainer &getFieldDefault(a, d) const; g *h; e *i; f *j; }; struct FieldInfo { FieldInfo(ManagedObjectConst, a, d); ManagedObjectConst k; }; b compare(const FieldInfo &, const ADataContainer &); class ManagedObject : public ManagedObjectConst {}; } using namespace db; void FN(ManagedObject &k, const BitMask &) { if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; if (!k.isFieldDefault(8, d::candidate) && !compare(FieldInfo(k, 11, d::candidate), k.getFieldDefault(11, d::candidate)) == c) return; } }