aboutsummaryrefslogtreecommitdiff
path: root/test/FrontendC++/2006-11-30-NoCompileUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/FrontendC++/2006-11-30-NoCompileUnit.cpp')
-rw-r--r--test/FrontendC++/2006-11-30-NoCompileUnit.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/FrontendC++/2006-11-30-NoCompileUnit.cpp b/test/FrontendC++/2006-11-30-NoCompileUnit.cpp
new file mode 100644
index 0000000000..c1fa9aed89
--- /dev/null
+++ b/test/FrontendC++/2006-11-30-NoCompileUnit.cpp
@@ -0,0 +1,58 @@
+// This is a regression test on debug info to make sure we don't hit a compile
+// unit size issue with gdb.
+// RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \
+// RUN: llc --disable-fp-elim -o NoCompileUnit.s -f
+// RUN: %compile_c NoCompileUnit.s -o NoCompileUnit.o
+// RUN: %compile_cxx NoCompileUnit.o -o NoCompileUnit.exe
+// RUN: echo {break main\nrun\np NoCompileUnit::pubname} > %t2
+// RUN: gdb -q -batch -n -x %t2 NoCompileUnit.exe | \
+// RUN: tee NoCompileUnit.out | not grep {"low == high"}
+// XFAIL: alpha|ia64|arm
+
+
+class MamaDebugTest {
+private:
+ int N;
+
+protected:
+ MamaDebugTest(int n) : N(n) {}
+
+ int getN() const { return N; }
+
+};
+
+class BabyDebugTest : public MamaDebugTest {
+private:
+
+public:
+ BabyDebugTest(int n) : MamaDebugTest(n) {}
+
+ static int doh;
+
+ int doit() {
+ int N = getN();
+ int Table[N];
+
+ int sum = 0;
+
+ for (int i = 0; i < N; ++i) {
+ int j = i;
+ Table[i] = j;
+ }
+ for (int i = 0; i < N; ++i) {
+ int j = Table[i];
+ sum += j;
+ }
+
+ return sum;
+ }
+
+};
+
+int BabyDebugTest::doh;
+
+
+int main(int argc, const char *argv[]) {
+ BabyDebugTest BDT(20);
+ return BDT.doit();
+}