2006-12-04 20:46:05 +00:00
|
|
|
// This is a regression test on debug info to make sure we don't hit a compile
|
|
|
|
// unit size issue with gdb.
|
2007-04-15 22:37:04 +00:00
|
|
|
// RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | \
|
2009-08-25 15:38:29 +00:00
|
|
|
// RUN: llc --disable-fp-elim -o NoCompileUnit.s
|
2008-03-10 06:52:10 +00:00
|
|
|
// RUN: %compile_c NoCompileUnit.s -o NoCompileUnit.o
|
2008-06-10 18:01:54 +00:00
|
|
|
// RUN: %link NoCompileUnit.o -o NoCompileUnit.exe
|
2007-04-15 22:37:04 +00:00
|
|
|
// RUN: echo {break main\nrun\np NoCompileUnit::pubname} > %t2
|
2007-07-23 15:23:35 +00:00
|
|
|
// RUN: gdb -q -batch -n -x %t2 NoCompileUnit.exe | \
|
|
|
|
// RUN: tee NoCompileUnit.out | not grep {"low == high"}
|
2009-07-24 00:30:09 +00:00
|
|
|
// XFAIL: alpha|arm
|
2008-06-13 16:52:35 +00:00
|
|
|
// XFAIL: *
|
|
|
|
// See PR2454
|
2006-11-30 15:36:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
}
|