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

Reply via email to