1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clang %s -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set breakpoint pending on
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: break test_parameters
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: step
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print pf[0]
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $1 = 0
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print ppd[1][1]
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $2 = 3
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print s
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $3 = (char_struct &)
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: {c = 97 'a', c2 = "01"}
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print ppn
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $4 = (int **) 0x0
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print us
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $5 = 10
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: print l
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: $6 = 42
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: continue
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastruct char_struct {
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  char c;
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  char c2[2];
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea} compound_char;
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleadouble test_parameters(float* pf, double ppd[][2], struct char_struct& s, int** ppn = 0, unsigned short us = 10u, const unsigned long l = 42)
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
30094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double result = pf[0] * ppd[1][1] * s.c * us * l;
31094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return result;
32094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
33094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
34094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main(int argc, char* argv[])
35094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea{
36094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  struct char_struct s;
37094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  float f = 0.f;
38094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double d[2][2] = {{0, 1}, {2, 3.0}};
39094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
40094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.c = 'a';
41094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.c2[0] = '0';
42094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  s.c2[1] = '1';
43094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
44094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  double result = test_parameters(&f, d, s);
45094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return(result == 0 ? 0 : -1);
46094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
47