76 lines
1.2 KiB
C
76 lines
1.2 KiB
C
// RUN: %clangxx %s -g -fexceptions %extra-clang-opts -o %t
|
|
// RUN: %Test_jit_debuginfo %s %t
|
|
// DEBUGGER: set breakpoint pending on
|
|
// DEBUGGER: break function_test
|
|
// DEBUGGER: break %s:47
|
|
// DEBUGGER: break %s:55
|
|
// DEBUGGER: break %s:60
|
|
// DEBUGGER: break %s:66
|
|
// DEBUGGER: break %s:69
|
|
// DEBUGGER: run
|
|
// DEBUGGER: bt 2
|
|
// CHECK: #0
|
|
// CHECK: function_test
|
|
// CHECK: #1
|
|
// CHECK: main
|
|
// DEBUGGER: continue
|
|
// DEBUGGER: print j
|
|
// CHECK: $1 = 0
|
|
// DEBUGGER: step
|
|
// DEBUGGER: print j
|
|
// CHECK: $2 = 1
|
|
// DEBUGGER: continue
|
|
// DEBUGGER: print j
|
|
// CHECK: $3 = -1
|
|
// DEBUGGER: continue
|
|
// DEBUGGER: bt 3
|
|
// CHECK: #0
|
|
// CHECK: inline_test
|
|
// CHECK: #1
|
|
// CHECK: function_test
|
|
// CHECK: #2
|
|
// CHECK: main
|
|
// DEBUGGER: continue
|
|
// DEBUGGER: print j
|
|
// CHECK: $4 = 2
|
|
// DEBUGGER: continue
|
|
// DEBUGGER: print j
|
|
// CHECK: $5 = 0
|
|
// DEBUGGER: continue
|
|
|
|
__attribute__((noinline)) static int function_test();
|
|
__attribute__((always_inline)) static int inline_test();
|
|
|
|
int inline_test()
|
|
{
|
|
int i = 0;
|
|
i++;
|
|
return i;
|
|
}
|
|
|
|
int function_test(int c)
|
|
{
|
|
int i, j = 0;
|
|
for (i = 0; i < c; i++) {
|
|
j++;
|
|
}
|
|
|
|
{
|
|
int j = -1;
|
|
j++;
|
|
}
|
|
|
|
j += inline_test();
|
|
|
|
if (j > 0) {
|
|
j = 0;
|
|
}
|
|
|
|
return j;
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
return function_test(1);
|
|
}
|