bcraig created this revision. bcraig added a reviewer: mclow.lists. bcraig added a subscriber: cfe-commits.
This test has a lot of classes with large amounts of manually inserted padding in them, presumable to prevent various optimizations. The test then creates lots of these objects on the stack. On embedded targets, this was usually enough to overflow the stack. I reduced the padding significantly. I made the padding values prime to try and keep the evil optimizations at bay. http://reviews.llvm.org/D15539 Files: test/dynamic_cast14.pass.cpp
Index: test/dynamic_cast14.pass.cpp =================================================================== --- test/dynamic_cast14.pass.cpp +++ test/dynamic_cast14.pass.cpp @@ -15,7 +15,7 @@ struct A1 { - char _[43981]; + char _[2]; virtual ~A1() {} A1* getA1() {return this;} @@ -23,7 +23,7 @@ struct A2 { - char _[34981]; + char _[3]; virtual ~A2() {} A2* getA2() {return this;} @@ -33,7 +33,7 @@ : public A1, public virtual A2 { - char _[93481]; + char _[5]; virtual ~A3() {} A1* getA1_3() {return A1::getA1();} @@ -45,7 +45,7 @@ : public virtual A2, public A1 { - char _[13489]; + char _[7]; virtual ~A4() {} A1* getA1_4() {return A1::getA1();} @@ -57,7 +57,7 @@ : public A3, public A4 { - char _[13489]; + char _[11]; virtual ~A5() {} A1* getA1_3() {return A3::getA1();} @@ -71,7 +71,7 @@ struct A6 : public A1 { - char _[81349]; + char _[13]; virtual ~A6() {} A1* getA1_6() {return A1::getA1();} @@ -82,7 +82,7 @@ : public A5, public A6 { - char _[34819]; + char _[17]; virtual ~A7() {} A1* getA1_3() {return A5::getA1_3();} @@ -99,7 +99,7 @@ struct A8 : public A7 { - char _[3489]; + char _[19]; virtual ~A8() {} A1* getA1_3() {return A7::getA1_3();} @@ -117,7 +117,7 @@ struct A9 : public A1 { - char _[3481]; + char _[23]; virtual ~A9() {} A1* getA1_9() {return A1::getA1();} @@ -127,7 +127,7 @@ struct A10 : public virtual A8 { - char _[4831]; + char _[29]; virtual ~A10() {} A1* getA1_3() {return A8::getA1_3();} @@ -147,7 +147,7 @@ : public virtual A8, public A9 { - char _[6483]; + char _[31]; virtual ~A11() {} A1* getA1_3() {return A8::getA1_3();} @@ -169,7 +169,7 @@ : public A10, public A11 { - char _[2283]; + char _[37]; virtual ~A12() {} A1* getA1_3() {return A10::getA1_3();} @@ -192,7 +192,7 @@ struct A13 : public A12 { - char _[1283]; + char _[41]; virtual ~A13() {} A1* getA1_3() {return A12::getA1_3();} @@ -736,7 +736,7 @@ struct A1 { - char _[43981]; + char _[2]; virtual ~A1() {} A1* getA1() {return this;} @@ -744,7 +744,7 @@ struct A2 { - char _[34981]; + char _[3]; virtual ~A2() {} A2* getA2() {return this;} @@ -754,7 +754,7 @@ : protected A1, public virtual A2 { - char _[93481]; + char _[5]; virtual ~A3() {} A1* getA1_3() {return A1::getA1();} @@ -766,7 +766,7 @@ : public virtual A2, public A1 { - char _[13489]; + char _[7]; virtual ~A4() {} A1* getA1_4() {return A1::getA1();} @@ -778,7 +778,7 @@ : public A3, public A4 { - char _[13489]; + char _[11]; virtual ~A5() {} A1* getA1_3() {return A3::getA1();} @@ -792,7 +792,7 @@ struct A6 : public A1 { - char _[81349]; + char _[13]; virtual ~A6() {} A1* getA1_6() {return A1::getA1();} @@ -803,7 +803,7 @@ : public A5, public A6 { - char _[34819]; + char _[17]; virtual ~A7() {} A1* getA1_3() {return A5::getA1_3();} @@ -820,7 +820,7 @@ struct A8 : public A7 { - char _[3489]; + char _[19]; virtual ~A8() {} A1* getA1_3() {return A7::getA1_3();} @@ -838,7 +838,7 @@ struct A9 : public A1 { - char _[3481]; + char _[23]; virtual ~A9() {} A1* getA1_9() {return A1::getA1();} @@ -848,7 +848,7 @@ struct A10 : public virtual A8 { - char _[4831]; + char _[29]; virtual ~A10() {} A1* getA1_3() {return A8::getA1_3();} @@ -868,7 +868,7 @@ : public virtual A8, public A9 { - char _[6483]; + char _[31]; virtual ~A11() {} A1* getA1_3() {return A8::getA1_3();} @@ -890,7 +890,7 @@ : public A10, public A11 { - char _[2283]; + char _[37]; virtual ~A12() {} A1* getA1_3() {return A10::getA1_3();} @@ -913,7 +913,7 @@ struct A13 : public A12 { - char _[1283]; + char _[41]; virtual ~A13() {} A1* getA1_3() {return A12::getA1_3();} @@ -1457,7 +1457,7 @@ struct A1 { - char _[43981]; + char _[2]; virtual ~A1() {} A1* getA1() {return this;} @@ -1465,7 +1465,7 @@ struct A2 { - char _[34981]; + char _[3]; virtual ~A2() {} A2* getA2() {return this;} @@ -1475,7 +1475,7 @@ : public A1, protected virtual A2 { - char _[93481]; + char _[5]; virtual ~A3() {} A1* getA1_3() {return A1::getA1();} @@ -1487,7 +1487,7 @@ : public virtual A2, public A1 { - char _[13489]; + char _[7]; virtual ~A4() {} A1* getA1_4() {return A1::getA1();} @@ -1499,7 +1499,7 @@ : public A3, public A4 { - char _[13489]; + char _[11]; virtual ~A5() {} A1* getA1_3() {return A3::getA1();} @@ -1513,7 +1513,7 @@ struct A6 : public A1 { - char _[81349]; + char _[13]; virtual ~A6() {} A1* getA1_6() {return A1::getA1();} @@ -1524,7 +1524,7 @@ : public A5, public A6 { - char _[34819]; + char _[17]; virtual ~A7() {} A1* getA1_3() {return A5::getA1_3();} @@ -1541,7 +1541,7 @@ struct A8 : public A7 { - char _[3489]; + char _[19]; virtual ~A8() {} A1* getA1_3() {return A7::getA1_3();} @@ -1559,7 +1559,7 @@ struct A9 : public A1 { - char _[3481]; + char _[23]; virtual ~A9() {} A1* getA1_9() {return A1::getA1();} @@ -1569,7 +1569,7 @@ struct A10 : public virtual A8 { - char _[4831]; + char _[29]; virtual ~A10() {} A1* getA1_3() {return A8::getA1_3();} @@ -1589,7 +1589,7 @@ : public virtual A8, public A9 { - char _[6483]; + char _[31]; virtual ~A11() {} A1* getA1_3() {return A8::getA1_3();} @@ -1611,7 +1611,7 @@ : public A10, public A11 { - char _[2283]; + char _[37]; virtual ~A12() {} A1* getA1_3() {return A10::getA1_3();} @@ -1634,7 +1634,7 @@ struct A13 : public A12 { - char _[1283]; + char _[41]; virtual ~A13() {} A1* getA1_3() {return A12::getA1_3();}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits