1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clang %s -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// If debug info for my_number() is emitted outside function foo's scope
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// then a debugger may not be able to handle it. At least one version of
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// gdb crashes in such cases.
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set breakpoint pending on
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: b nested-struct.cpp:28
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: ptype foo
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: type = int (void)
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint foo() {
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  struct Local {
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea    static int my_number() {
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea      return 42;
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea    }
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  };
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int i = 0;
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  i = Local::my_number();
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return i + 1;
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main() {
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  foo();
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return 0;
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
30