1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clangxx %s -O0 -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// XFAIL: host-bcc
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// (This testcase is expected to fail because of bcc optimizations that
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea//  are enabled by default in the absence of metadata)
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set breakpoint pending on
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: break test_struct
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: step
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print s
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $1 = {n = 10, n2 = {20, 21}}
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: continue
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct int_struct {
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int n;
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int n2[2];
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea} compound_int;
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint test_struct(struct int_struct s)
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.n2[1]++;
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return s.n > s.n2[0] ? s.n : s.n2[0];
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main(int argc, char* argv[])
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  struct int_struct s;
30094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
31094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.n = 10;
32094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.n2[0] = 20;
33094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.n2[1] = 21;
34094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
35094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int result = test_struct(s);
36094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return(result == 20 ? 0 : -1);
37094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
38