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);
|
||
|
}
|