blob: 9cdad6838a171729dcd71ed8d594ed0afee9eef9 [file] [log] [blame]
// 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;
}
}